อ่าน 3 นาที
การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล
นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (Data Serialization Formats ) ซึ่งเป็นวิธีการต่างๆ ในการแปลงวัตถุ ที่ซับซ้อน...
การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล
นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (Data Serialization Formats ) ซึ่งเป็นวิธีการต่างๆ ในการแปลงวัตถุ ที่ซับซ้อน ให้เป็นลำดับของบิตโดยไม่ได้รวมถึงภาษามาร์กอัปที่ใช้เฉพาะในรูปแบบไฟล์เอกสาร
ภาพรวม
| ชื่อ | ผู้สร้าง-ผู้ดูแล | อ้างอิงจาก | ได้มาตรฐานแล้วใช่ไหม? | ข้อกำหนด | เลขฐานสอง ? | อ่านง่ายสำหรับมนุษย์ใช่ไหม? | รองรับการอ้างอิงหรือไม่? e | Schema- IDL ? | APIมาตรฐาน | รองรับการดำเนินการ แบบไม่ต้องคัดลอกข้อมูล |
|---|---|---|---|---|---|---|---|---|---|---|
| ลูกศรอะปาเช่ | มูลนิธิซอฟต์แวร์ Apache | ไม่มีข้อมูล | พฤตินัย | รูปแบบคอลัมน์ลูกศร | ใช่ | เลขที่ | ใช่ | ในตัว | C, C++, C#, Go, Java, JavaScript, Julia, Matlab, Python, R, Ruby, Rust, Swift | ใช่ |
| อาปาเช่ อัฟโร | มูลนิธิซอฟต์แวร์ Apache | ไม่มีข้อมูล | เลขที่ | ข้อมูลจำเพาะของ Apache Avro™ | ใช่ | บางส่วนg | ไม่มีข้อมูล | ในตัว | C, C#, C++, Java, PHP, Python, Ruby | ไม่มีข้อมูล |
| ปาร์เกต์อะปาเช่ | มูลนิธิซอฟต์แวร์ Apache | ไม่มีข้อมูล | เลขที่ | ปาร์เกต์อะปาเช่ | ใช่ | เลขที่ | เลขที่ | ไม่มีข้อมูล | Java, Python, C++ | เลขที่ |
| อะปาเช่ ทริฟท์ | เฟซบุ๊ก (ผู้สร้าง) อะปาเช่ (ผู้ดูแลระบบ) | ไม่มีข้อมูล | เลขที่ | เอกสารไวท์เปเปอร์ฉบับดั้งเดิม | ใช่ | บางส่วนc | เลขที่ | ในตัว | C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi และภาษาอื่นๆ[ 1 ] | ไม่มีข้อมูล |
| ASN.1 | ISO , IEC , ITU-T | ไม่มีข้อมูล | ใช่ | มาตรฐาน ISO/IEC 8824 / ITU-T X.680 (ไวยากรณ์) และ ISO/IEC 8825 / ITU-T X.690 (กฎการเข้ารหัส) X.680, X.681 และ X.683 กำหนดไวยากรณ์และความหมาย | BER , DER , PER , OERหรือแบบกำหนดเองผ่านECN | XER , JER , GSERหรือแบบกำหนดเองผ่านECN | ใช่f | ในตัว | ไม่มีข้อมูล | OER |
| เบนโคด | แบรห์ม โคเฮน (ผู้สร้าง) BitTorrent, Inc. (ผู้ดูแลระบบ) | ไม่มีข้อมูล | โดยพฤตินัยคือBEP | ส่วนหนึ่งของข้อกำหนดโปรโตคอล BitTorrent | ยกเว้นตัวเลขและตัวคั่น ซึ่งเป็นข้อมูล ASCII | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| บีซัน | มงโกดีบี | เจซอน | เลขที่ | ข้อกำหนด BSON | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| กัปตันโปรโต | เคนตัน วาร์ดา | ไม่มีข้อมูล | เลขที่ | ข้อมูลจำเพาะการเข้ารหัส Cap'n Proto | ใช่ | บางส่วนh | เลขที่ | ใช่ | เลขที่ | ใช่ |
| ซีบีโออาร์ | คาร์สเตน บอร์มันน์, พี. ฮอฟฟ์แมน | ชุดข้อความ[ 2 ] | ใช่ | อาร์เอฟซี 8949 | ใช่ | เลขที่ | ใช่ผ่านการติดแท็ก | ซีดีดีแอล | ฟิโด2 | เลขที่ |
| ค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV) | ผู้เขียน RFC: Yakov Shafranovich | ไม่มีข้อมูล | รูปแบบที่ไม่เป็นทางการมากมาย | RFC 4180 (และมาตรฐานอื่นๆ) | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| รูปแบบการนำเสนอข้อมูลทั่วไป (CDR) | กลุ่มการจัดการวัตถุ | ไม่มีข้อมูล | ใช่ | พิธีสารทั่วไประหว่าง ORB | ใช่ | เลขที่ | ใช่ | ใช่ | Ada, C, C++, Java, Cobol, Lisp, Python, Ruby, Smalltalk | ไม่มีข้อมูล |
| โปรโตคอลข้อความ D-Bus | ฟรีเดสก์ท็อป.org | ไม่มีข้อมูล | ใช่ | ข้อกำหนด D-Bus | ใช่ | เลขที่ | เลขที่ | บางส่วน(สตริงลายเซ็น) | ใช่ | ไม่มีข้อมูล |
| การแลกเปลี่ยนข้อมูล XML ที่มีประสิทธิภาพ (EXI) | ดับเบิลยู3ซี | XML , XML ที่มีประสิทธิภาพ | ใช่ | รูปแบบการแลกเปลี่ยน XML ที่มีประสิทธิภาพ (EXI) เวอร์ชัน 1.0 | ใช่ | อีเอ็มแอลอี | XPointer , XPath | โครงสร้าง XML | DOM , SAX , StAX , XQuery , XPath | ไม่มีข้อมูล |
| สัญกรณ์ข้อมูลที่ขยายได้ (edn) | ริช ฮิกกี้ / ชุมชนโคลจูร์ | โคลจูร์ | ใช่ | ข้อกำหนดอย่างเป็นทางการของรุ่น | เลขที่ | ใช่ | เลขที่ | เลขที่ | Clojure, Ruby, Go, C++, Javascript, Java, CLR, ObjC, Python [ 3 ] | เลขที่ |
| แฟลตบัฟเฟอร์ | ไม่มีข้อมูล | เลขที่ | Flatbuffers GitHub | ใช่ | ลูกศรอะปาเช่ | บางส่วน(ภายในบัฟเฟอร์) | ใช่ | C++, Java, C#, Go, Python, Rust, JavaScript, PHP, C, Dart, Lua, TypeScript | ใช่ | |
| ชุดข้อมูลด่วน | ISO , IEC , ITU-T | อีเอ็มแอลอี | ใช่ | ITU-T X.891 และ ISO/IEC 24824-1:2007 | ใช่ | เลขที่ | XPointer , XPath | สคีมา XML | DOM , SAX , XQuery , XPath | ไม่มีข้อมูล |
| เอฟเอชอาร์ | ระดับสุขภาพ 7 | พื้นฐาน ของ REST | ใช่ | แหล่งข้อมูลด้านการทำงานร่วมกันของระบบดูแลสุขภาพที่รวดเร็ว | ใช่ | ใช่ | ใช่ | ใช่ | Hapi สำหรับ FHIR [ 4 ] JSON , XML , Turtle | เลขที่ |
| อินิ | ไมโครซอฟต์ | ? | เลขที่ | มีอยู่หลายแบบที่แตกต่างกัน | เลขที่ | ใช่ | ? | ? | ? | ? |
| ไอออน | อเมซอน | เจซอน | เลขที่ | ข้อกำหนดของ Amazon Ion | ใช่ | ใช่ | เลขที่ | แผนผังไอออน | C, C#, Go, Java, JavaScript, Python, Rust | ไม่มีข้อมูล |
| การแปลง ข้อมูล Java เป็นอนุกรม | บริษัท ออราเคิล คอร์ปอเรชั่น | ไม่มีข้อมูล | ใช่ | การแปลงอ็อบเจ็กต์ Java เป็นอนุกรม | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ | ไม่มีข้อมูล |
| เจซอน | ดักลาส คร็อกฟอร์ด | ไวยากรณ์ JavaScript | ใช่ | STD 90 /RFC 8259 (เสริม: RFC 6901, RFC 6902), ECMA-404 , ISO/IEC 21778:2017 | ไม่ แต่ดูBSON , Smile , UBJSON สิ | ใช่ | ตัวชี้ JSON (RFC 6901)หรือทางเลือกอื่น ๆ เช่นJSONPath , JPath , JSPON , json:select()และJSON-LD | บางส่วน( ข้อเสนอ JSON Schema , ASN.1พร้อมJER , Kwalify เก็บถาวรเมื่อ 2021-08-12 ที่Wayback Machine , Rx , JSON-LD) | บางส่วน( คลาริเน็ต , JSONQuery / RQL , JSONPath ), JSON-LD | เลขที่ |
| ชุดข้อความ | ซาดายูกิ ฟุรุฮาชิ | เจซอน (อย่างคร่าวๆ) | เลขที่ | ข้อกำหนดรูปแบบ MessagePack | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ |
| เน็ตสตริง | แดน เบิร์นสไตน์ | ไม่มีข้อมูล | เลขที่ | netstrings.txt | ยกเว้นตัวคั่น ASCII | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ |
| โอจีดีแอล | รอลฟ์ วีน | ? | เลขที่ | ข้อกำหนด | ข้อกำหนดไบนารี | ใช่ | การระบุเส้นทาง | แผนผัง WD | ไม่มีข้อมูล | |
| OPC-UA ไบนารี | มูลนิธิ OPC | ไม่มีข้อมูล | เลขที่ | opcfoundation.org | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | ไม่มีข้อมูล |
| โอเพ่นดีดีแอล | เอริค เลงเยล | ซี , พีเอชพี | เลขที่ | OpenDDL.org | เลขที่ | ใช่ | ใช่ | เลขที่ | ไลบรารี OpenDDL | ไม่มีข้อมูล |
| รูปแบบการซีเรียลไลซ์ PHP | กลุ่ม PHP | ไม่มีข้อมูล | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ไม่มีข้อมูล |
| พิคเคิล (ไพธอน) | กุยโด ฟาน รอสซัม | ไพธอน | โดยพฤตินัยในฐานะPEPs | PEP 3154 – โปรโตคอล Pickle เวอร์ชัน 4 | ใช่ | เลขที่ | ใช่[ 5 ] | เลขที่ | ใช่ | เลขที่ |
| รายการอสังหาริมทรัพย์ | NeXT (ผู้สร้าง) Apple (ผู้ดูแลรักษา) | ? | บางส่วน | DTD สาธารณะสำหรับรูปแบบ XML | ใช่ | ใช่ข | เลขที่ | ? | Cocoa , CoreFoundation , OpenStep , GnuStep | เลขที่ |
| โปรโตคอลบัฟเฟอร์ (protobuf) | ไม่มีข้อมูล | เลขที่ | คู่มือสำหรับนักพัฒนา: การเข้ารหัส , ข้อกำหนด proto2และข้อกำหนด proto3 | ใช่ | ใช่d | เลขที่ | ในตัว | C++, Java, C#, Python, Go, Ruby, Objective-C, C, Dart, Perl, PHP, R, Rust, Scala, Swift, Julia, D, ActionScript, Delphi, Elixir, Elm, Erlang, GopherJS, Haskell, Haxe, JavaScript, Kotlin, Lua, Matlab, Mercurt, OCaml, Prolog, Solidity, TypeScript, Vala, Visual Basic | เลขที่ | |
| การแสดงออกของ S | จอห์น แมคคาร์ธี (ต้นฉบับ) รอน ริเวสต์ (ฉบับร่างทางอินเทอร์เน็ต) | ลิสป์ , เน็ตสตริงส์ | โดยส่วนใหญ่แล้วเป็นไปโดยพฤตินัย | เอกสาร "S-Expressions" ถูกเก็บถาวรเมื่อวันที่ 7 ตุลาคม 2013 ที่Wayback Machine (ฉบับร่างทางอินเทอร์เน็ต) | ใช่การนำเสนอแบบแคนอน | ใช่การนำเสนอระบบขนส่งขั้นสูง | เลขที่ | เลขที่ | ไม่มีข้อมูล | |
| รอยยิ้ม | ทาตู ซาโลรันตา | เจซอน | เลขที่ | ข้อกำหนดรูปแบบรอยยิ้ม | ใช่ | เลขที่ | ใช่ | บางส่วน( ข้อเสนอโครงสร้าง JSON , โครงสร้าง JSON อื่นๆ/IDL) | บางส่วน(ผ่าน JSON API ที่ใช้งานด้วย Smile backend บน Jackson, Python) | ไม่มีข้อมูล |
| สบู่ | ดับเบิลยู3ซี | อีเอ็มแอลอี | ใช่ | ข้อแนะนำของ W3C : SOAP/1.1 SOAP/1.2 | บางส่วน( การแลกเปลี่ยน XML ที่มีประสิทธิภาพ , XML ไบนารี , Fast Infoset , MTOM , ข้อมูลXSD base64 ) | ใช่ | มี id/ref, XPointerและXPathในตัว | WSDL , สคีมา XML | DOM , SAX , XQuery , XPath | ไม่มีข้อมูล |
| รูปแบบการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง | แม็กซ์ ไวลด์กรุบ | ไม่มีข้อมูล | ใช่ | อาร์เอฟซี 3072 | ใช่ | เลขที่ | เลขที่ | เลขที่ | ไม่มีข้อมูล | |
| ทอมล์ | ทอม เพรสตัน-เวอร์เนอร์ | รูปแบบ ไฟล์ INI | ใช่ | เวอร์ชัน 1.1.0 เวอร์ชันล่าสุด | เลขที่ | ใช่ | ? | ? | ? | ? |
| ยูบีซอน | เดอะ บัซซ์ มีเดีย แอลแอลซี | เจซอน , บีซอน | เลขที่ | ubjson.org | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ไม่มีข้อมูล |
| การแสดงข้อมูลภายนอก (XDR) | Sun Microsystems (ผู้สร้าง) IETF (ผู้ดูแลรักษา) | ไม่มีข้อมูล | ใช่ | มาตรฐาน 67 /RFC 4506 | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ไม่มีข้อมูล |
| อีเอ็มแอลอี | ดับเบิลยู3ซี | เอสจีเอ็มแอล | ใช่ | ข้อแนะนำของ W3C : 1.0 (ฉบับที่ห้า) 1.1 (ฉบับที่สอง) | บางส่วน( การแลกเปลี่ยน XML ที่มีประสิทธิภาพ , XML ไบนารี , Fast Infoset , ข้อมูลXSD base64 ) | ใช่ | XPointer , XPath | สคีมา XML , RELAX NG | DOM , SAX , XQuery , XPath | ไม่มีข้อมูล |
| อีเอ็มแอลอีอาร์พีซี | เดฟ ไวเนอร์[ 6 ] | อีเอ็มแอลอี | เลขที่ | ข้อกำหนด XML-RPC | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| ยาเอ็มแอล | คลาร์ก อีแวนส์, อินจี้ ดอท เน็ตและโอเรน เบน-กีกี้ | C , Java , Perl , Python , Ruby , อีเมล , HTML , MIME , URI , XML , SAX , SOAP , JSON [ 7 ] | เลขที่ | เวอร์ชัน 1.2 | เลขที่ | ใช่ | ใช่ | บางส่วน( เก็บถาวรโดย Kwalify เมื่อ 2021-08-12 ที่Wayback Machine , Rx , คำจำกัดความประเภทภาษาในตัว) | เลขที่ | เลขที่ |
| ชื่อ | ผู้สร้าง-ผู้ดูแล | อ้างอิงจาก | ได้มาตรฐานแล้วใช่ไหม? | ข้อกำหนด | เลขฐานสอง ? | อ่านง่ายสำหรับมนุษย์ใช่ไหม? | รองรับการอ้างอิงหรือไม่? e | Schema- IDL ? | APIมาตรฐาน | รองรับการดำเนินการ แบบไม่ต้องคัดลอกข้อมูล |
- ^รูปแบบเริ่มต้นปัจจุบันคือไบนารี
- รูปแบบ "คลาสสิ ก " คือข้อความธรรมดา และยังรองรับรูปแบบ XML ด้วย
- ^ในทางทฤษฎีแล้วเป็นไปได้เนื่องจากแนวคิดเชิงนามธรรม แต่ไม่มีการนำระบบไปใช้จริง
- ^รูปแบบหลักคือไบนารี่ แต่มีรูปแบบข้อความและ JSON ให้เลือกใช้ [ 8 ] [ 9 ]
- ^หมายความว่าเครื่องมือ/ไลบรารีทั่วไปรู้วิธีเข้ารหัส ถอดรหัส และอ้างอิงถึงข้อมูลอื่นในเอกสารเดียวกัน เครื่องมืออาจต้องการIDLแต่ไม่ต้องการอะไรมากกว่านั้น ไม่รวมเทคนิคการอ้างอิงแบบกำหนดเองที่ไม่เป็นมาตรฐาน
- ^ ASN.1 มี X.681 (ระบบวัตถุข้อมูล), X.682 (ข้อจำกัด) และ X.683 (การกำหนดพารามิเตอร์) ที่อนุญาตให้ระบุประเภทเปิดได้อย่างแม่นยำ โดยที่ประเภทของค่าสามารถระบุได้ด้วยจำนวนเต็ม,OIDเป็นต้น OID เป็นรูปแบบมาตรฐานสำหรับตัวระบุที่ไม่ซ้ำกันทั่วโลก รวมถึงเป็นสัญกรณ์มาตรฐาน ("การอ้างอิงแบบสัมบูรณ์") สำหรับการอ้างอิงส่วนประกอบของค่า ตัวอย่างเช่น PKIX ใช้สัญกรณ์ดังกล่าวใน RFC 5912 ด้วยสัญกรณ์ดังกล่าว (ข้อจำกัดเกี่ยวกับประเภทพารามิเตอร์โดยใช้ชุดวัตถุข้อมูล) เครื่องมือ/ไลบรารี ASN.1 ทั่วไปสามารถเข้ารหัส/ถอดรหัส/แก้ไขการอ้างอิงภายในเอกสารได้โดยอัตโนมัติ
- ^รูปแบบหลักคือไบนารี มีตัวเข้ารหัส JSON ให้ใช้งาน [ 10 ]
- ^รูปแบบหลักคือไบนารี แต่ก็มีรูปแบบข้อความให้เลือกใช้ด้วย
การเปรียบเทียบไวยากรณ์ของรูปแบบที่มนุษย์อ่านได้
| รูปแบบ | โมฆะ | บูลีนจริง | บูลีนเท็จ | จำนวนเต็ม | จุดลอยตัว | สตริง | อาร์เรย์ | อาร์เรย์แบบเชื่อมโยง / อ็อบเจ็กต์ |
|---|---|---|---|---|---|---|---|---|
| ASN.1 (กฎการเข้ารหัส XML) | <foo /> | <foo>true</foo> | <foo>false</foo> | <foo>685230</foo> | <foo>6.8523015e+5</foo> | <foo>A to Z</foo> | <SeqOfUnrelatedDatatypes> <isMarried> true </isMarried> <hobby /> <velocity> -42.1e7 </velocity> <bookname> A to Z </bookname> <bookname>เราบอกว่า"ไม่" </bookname> </SeqOfUnrelatedDatatypes> | อ็อบเจ็กต์ (คีย์คือชื่อฟิลด์): <person> <isMarried> true </isMarried> <hobby /> <height> 1.85 </height> <name> Bob Peterson </name> </person>การแมปข้อมูล (คีย์คือค่าข้อมูล): <การแข่งขัน> <การวัด> <ชื่อ>จอห์น </ชื่อ> <ความสูง> 3.14 </ความสูง> < /การ วัด> <การวัด> <ชื่อ>เจน</ ชื่อ> < ความสูง> 2.718 </ความสูง> < /การวัด> < /การแข่งขัน> |
| ซีเอสวีบี | nulla (หรือองค์ประกอบว่างในแถว) a | 1อะtrueอะ | 0อะfalseอะ | 685230-685230เอ | 6.8523015e+5เอ | A to Z"We said, ""no""." | true,,-42.1e7,"A to Z" | 42,1 A ถึง Z,1,2,3 |
| เอดเอ็น | nil | true | false | 685230-685230 | 6.8523015e+5 | "A to Z","A \"up to\" Z" | [true nil -42.1e7 "A to Z"] | {:kw 1, "42" true, "A to Z" [1 2 3]} |
| ไอออน |
| true | false | 685230-6852300xA74AE0b111010010101110 | 6.8523015e5 | "A to Z"'''A to Z''' | [ true , null , -42.1e7 , "A ถึง Z" ] | { '42' : true , 'A ถึง Z' : [ 1 , 2 , 3 ]} |
| เน็ตสตริงซี | 0:,อะ4:null,อะ | 1:1,อะ4:true,อะ | 1:0,อะ5:false,อะ | 6:685230,เอ | 9:6.8523e+5,เอ | 6:A to Z, | 29:4:true,0:,7:-42.1e7,6:A to Z,, | 41:9:2:42,1:1,,25:6:A to Z,12:1:1,1:2,1:3,,,,เอ |
| เจซอน | null | true | false | 685230-685230 | 6.8523015e+5 | "A to Z" | [ true , null , -42.1e7 , "A ถึง Z" ] | { "42" : true , "A ถึง Z" : [ 1 , 2 , 3 ]} |
| โอจีดีแอล | nullเอ | trueเอ | falseเอ | 685230เอ | 6.8523015e+5เอ | "A to Z"'A to Z'NoSpaces | จริง โมฆะ -42.1e7 "เอ ถึง ซี"
| 42 จริง "เอ ถึง ซี" 1 2 3 42 จริง "จาก A ถึง Z" (1, 2, 3) |
| โอเพ่นดีดีแอล | ref {null} | bool {true} | bool {false} | int32 {685230}int32 {0x74AE}int32 {0b111010010101110} | float {6.8523015e+5} | string {"A to Z"} | อาร์เรย์เอกพันธุ์: int32 {1, 2, 3, 4, 5}อาร์เรย์แบบไม่เป็นเนื้อเดียวกัน: อาร์เรย์ { บูล {จริง} อ้างอิง {null} ลอยตัว {-42.1e7} สตริง {"A ถึง Z"} } | พจนานุกรม { ค่า (คีย์ = "42") {บูลีน {จริง}} ค่า (คีย์ = "A ถึง Z") {int32 {1, 2, 3}} } |
| รูปแบบการซีเรียลไลซ์ PHP | N; | b:1; | b:0; | i:685230;i:-685230; | d:685230.15;งd:INF;d:-INF;d:NAN; | s:6:"A to Z"; | a:4:{i:0;b:1;i:1;N;i:2;d:-421000000;i:3;s:6:"A to Z";} | อาร์เรย์แบบเชื่อมโยง: a:2:{i:42;b:1;s:6:"A to Z";a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}}อ็อบเจ็กต์: O:8:"stdClass":2:{s:4:"John";d:3.14;s:4:"Jane";d:2.718;}d |
| พิคเคิล (ไพธอน) | N. | I01\n. | I00\n. | I685230\n. | F685230.15\n. | S'A to Z'\n. | (lI01\na(laF-421000000.0\naS'A to Z'\na. | (dI42\nI01\nsS'A to Z'\n(lI1\naI2\naI3\nas. |
| รายการคุณสมบัติ (รูปแบบข้อความธรรมดา) [ 11 ] | ไม่มีข้อมูล | <*BY> | <*BN> | <*I685230> | <*R6.8523015e+5> | "A to Z" | ( <*BY>, <*R-42.1e7>, "A to Z" ) | { "42" = <*BY>; "A ถึง Z" = ( <*I1>, <*I2>, <*I3> ); } |
| รายการคุณสมบัติ (รูปแบบ XML) [ 12 ] | ไม่มีข้อมูล | <true /> | <false /> | <integer>685230</integer> | <real>6.8523015e+5</real> | <string>A to Z</string> | <array> <true /> <real> -42.1e7 </real> <string> A ถึงZ </string> </array> | <dict> <key> 42 </key> <true /> <key> A ถึงZ </key> <array> <integer> 1 </integer> <integer> 2 </integer> <integer> 3 </integer> </array> </dict> |
| บัฟเฟอร์โปรโตคอล | ไม่มีข้อมูล | true | false | 685230-685230 | 20.0855369 | "A to Z""sdfff2 \000\001\002\377\376\375""q\tqq<>q2&\001\377" | ฟิลด์ 1: "ค่า 1" ฟิลด์ 1: "ค่า 2" ฟิลด์ 1: "ค่า 3 ฟิลด์อื่น { ฟู: 123 บาร์: 456 } ฟิลด์อื่น { ฟู: 222 บาร์: 333 } | thing1 : "blahblah" thing2 : 18923743 thing3 : - 44 thing4 { submessage_field1 : "foo" submessage_field2 : false } enumeratedThing : SomeEnumeratedValue thing5 : 123.456 [ extensionFieldFoo ] : "etc" [ extensionFieldThatIsAnEnum ] : EnumValue |
| การแสดงออกของ S | NILnil | T#tเอฟtrue | NIL#fเอฟfalse | 685230 | 6.8523015e+5 | abc"abc"#616263#3:abc{MzphYmM=}|YWJj| | (T NIL -42.1e7 "A to Z") | ((42 T) ("A to Z" (1 2 3))) |
| ทอมล์ | ไม่มีข้อมูล | true | false | 685230+685_230-6852300x_0A_74_AE0b1010_0111_0100_1010_1110 | 6.8523015e+5685.230_15e+03685_230.15inf-infnan | "A to Z"'A to Z' | ["y", -42.1e7, "A to Z"][ "y" -42.1e7, "เอ ถึง ซี" ] | { John = 3.14, Jane = 2.718 }42 = y "A ถึง Z" = [1, 2, 3] |
| ยาเอ็มแอล | ~nullNullNULL[ 13 ] | yYyesYesYESonOnONtrueTrueTRUE[ 14 ] | nNnoNoNOoffOffOFFfalseFalseFALSE[ 14 ] | 685230+685_230-685230024722560x_0A_74_AE0b1010_0111_0100_1010_1110190:20:30[ 15 ] | 6.8523015e+5685.230_15e+03685_230.15190:20:30.15.inf-.inf.Inf.INF.NaN.nan.NAN[ 16 ] | A to Z"A to Z"'A to Z' | [y, ~, -42.1e7, "A to Z"]- y - - -42.1e7 - จาก A ถึง Z | {"John":3.14, "Jane":2.718}42: y จาก A ถึง Z: [1, 2, 3] |
| XML และ SOAP | <null />เอ | true | false | 685230 | 6.8523015e+5 | A to Z | <item> true </item> <item xsi:nil= "true" /> <item> -42.1e7 </item> <item> A ถึงZ <item> | <map> <entry key= "42" > true </entry> <entry key= "A to Z" > <item val= "1" /> <item val= "2" /> <item val= "3" /> </entry> </map> |
| อีเอ็มแอลอีอาร์พีซี | <value><boolean>1</boolean></value> | <value><boolean>0</boolean></value> | <value><int>685230</int></value> | <value><double>6.8523015e+5</double></value> | <value><string>A to Z</string></value> | <value><array> <data> <value><boolean> 1 </boolean></value> <value><double> -42.1e7 </double></value> <value><string> A ถึงZ </string></value> </data> </array></value> | <value><struct> <member> <name> 42 </name> <value><boolean> 1 </boolean></value> </member> <member> <name> A to Z </name> <value> <array> <data> <value><int> 1 </int></value> <value><int> 2 </int></value> <value><int> 3 </int></value> </data> </array> </value> </member> </struct> |
- ^ โดยทั่วไปแล้ว เครื่องมือ ผูกข้อมูล XMLจะถอดรหัสองค์ประกอบ XML ที่ถูกละเว้นเป็นค่า NULL ตัวอย่างที่แสดงในที่นี้คือการเข้ารหัสอีกแบบหนึ่งที่เป็นไปได้XML schemaไม่ได้กำหนดการเข้ารหัสสำหรับชนิดข้อมูลนี้
- ^ข้อกำหนด RFC CSV ครอบคลุมเฉพาะตัวคั่น บรรทัดใหม่ และเครื่องหมายอัญประกาศเท่านั้น ไม่ได้ครอบคลุมการแปลงโครงสร้างข้อมูลที่
- ^ข้อกำหนดnetstringsครอบคลุมเฉพาะสตริงไบต์สิ่งอื่นใดนอกเหนือจากนี้อยู่นอกขอบเขตของข้อกำหนดนี้
- PHP จะแปลงเลขทศนิยมเป็นค่าอื่นได้อย่างถูกต้อง แต่จะแปลงกลับเป็นค่าทศนิยมเต็มจำนวน ตัวอย่างเช่น 3.14 จะถูกแปลงเป็นค่าอื่น3.140 000 000 000 000 124 344 978 758 017 532 527 446 746 826 171 875 .
- ^ เครื่องมือ การผูกข้อมูล XMLและอนุกรม SOAPโครงสร้างข้อมูลการเขียนโปรแกรมเป็น XML ได้อย่างปลอดภัยตามประเภทภาพแสดงค่า XML ที่สามารถใส่ลงในองค์ประกอบและแอตทริบิวต์ของ XML ได้
- ^ไวยากรณ์นี้ไม่สอดคล้องกับ Internet-Draft แต่ถูกใช้ในภาษาLispสำเนียง
การเปรียบเทียบรูปแบบไบนารี
| รูปแบบ | โมฆะ | บูลีน | จำนวนเต็ม | จุดลอยตัว | สตริง | อาร์เรย์ | อาร์เรย์แบบเชื่อมโยง / อ็อบเจ็กต์ |
|---|---|---|---|---|---|---|---|
| ASN.1 ( การเข้ารหัส BER , PERหรือOER ) | ประเภท NULL | บูลีน :
| จำนวนเต็ม :
| จริง :
| รองรับประเภทข้อมูลที่ถูกต้องหลายประเภท ( VisibleString, PrintableString, GeneralString, UniversalString, UTF8String ) | ข้อกำหนดข้อมูลSET OF (ไม่เรียงลำดับ) และSEQUENCE OF (เรียงลำดับแน่นอน) | ประเภทที่ผู้ใช้กำหนดได้ |
| บีซัน | \x0A(1 ไบต์) | จริง: \x08\x01เท็จ: \x08\x00(2 ไบต์) | int32: 32 บิต แบบlittle-endian 2's complementหรือ int64: 64 บิต แบบlittle-endian 2's complement | ดับเบิล : ไบนารี 64 แบบ little-endian | เข้ารหัสแบบ UTF-8โดยมีสตริงที่เข้ารหัสแบบ int32 นำหน้า ความยาวเป็นไบต์ | เอกสาร BSONแบบฝังตัวที่มีคีย์ตัวเลข | เอกสารฝังตัว BSON |
| การนำเสนอวัตถุไบนารีแบบกระชับ (CBOR) | \xf6(1 ไบต์) |
(1 ไบต์) |
|
|
|
|
|
| การแลกเปลี่ยน XML ที่มีประสิทธิภาพ (EXI) [ a ] (รูปแบบค่าคำศัพท์ที่ไม่ได้รับการรักษาไว้) | xsi:nil ไม่ได้รับอนุญาตในบริบทไบนารี | จำนวนเต็ม 1-2 บิตที่ถูกตีความว่าเป็นค่าบูลีน | เครื่องหมายบูลีน บวกกับอ็อกเท็ต 7 บิตที่มีความยาวตามอำเภอใจ ซึ่งจะถูกแยกวิเคราะห์จนกว่าบิตที่มีนัยสำคัญสูงสุดจะเป็น 0 ในรูปแบบ little-endian โครงสร้างข้อมูลสามารถกำหนดจุดศูนย์เป็นตัวเลขใดก็ได้ตามอำเภอใจ ค่าที่ไม่มีเครื่องหมายจะข้ามแฟล็กบูลีนไป |
| ยูนิโค้ดที่เข้ารหัสด้วยจำนวนเต็มโดยมีคำนำหน้าความยาว จำนวนเต็มอาจแทนค่าการแจงนับหรือรายการในตารางสตริงก็ได้ | ชุดรายการที่มีคำนำหน้าความยาว | ไม่เป็นไปตามระเบียบปฏิบัติ |
| แฟลตบัฟเฟอร์ | เข้ารหัสเป็นการไม่มีฟิลด์ในออบเจ็กต์หลัก |
(1 ไบต์) | ระบบ Little-endian 2's complementทั้งแบบมีลายเซ็นและไม่มีลายเซ็น ขนาด 8/16/32/64 บิต | เข้ารหัสแบบ UTF-8โดยมีตัวเลขจำนวนเต็ม 32 บิตนำหน้า เพื่อแสดงความยาวของสตริงในหน่วยไบต์ | เวกเตอร์ประเภทอื่น ๆ จะต้องระบุความยาวเป็นจำนวนเต็ม 32 บิต ซึ่งเท่ากับจำนวนองค์ประกอบนำหน้า | ตาราง (ประเภทที่กำหนดโดยสคีมา) หรือเวกเตอร์ที่เรียงลำดับตามคีย์ (แผนที่/พจนานุกรม) | |
| ไอออน[ 18 ] | \x0f[ข] |
|
|
|
| \xbxความยาวและค่าใช้จ่ายเพิ่มเติมตามอำเภอใจ ความยาวเป็นอ็อกเท็ต |
|
| ชุดข้อความ | \xc0 |
|
| รหัสประเภท (1 ไบต์) + IEEE ซิงเกิล/ดับเบิล |
การเข้ารหัสไม่ได้ระบุไว้[ 19 ] |
|
|
| เน็ตสตริง[ c ] | ไม่เป็นไปตามระเบียบปฏิบัติ | ไม่เป็นไปตามระเบียบปฏิบัติ | ไม่เป็นไปตามระเบียบปฏิบัติ | ไม่เป็นไปตามระเบียบปฏิบัติ | เข้ารหัสความยาวเป็นสตริง ASCII + ':' + ข้อมูล + ',' ความยาวจะนับเฉพาะไบต์ระหว่าง ':' และ ',' เท่านั้น | ไม่เป็นไปตามระเบียบปฏิบัติ | ไม่เป็นไปตามระเบียบปฏิบัติ |
| ไบนารี OGDL | |||||||
| รายการคุณสมบัติ (รูปแบบไบนารี) | |||||||
| บัฟเฟอร์โปรโตคอล |
| เข้ารหัสแบบ UTF-8โดยมีตัวเลขจำนวนเต็มที่เข้ารหัสแบบ varint นำหน้า ความยาวของสตริงเป็นไบต์ | ค่าที่ซ้ำกันที่มีแท็กเดียวกัน หรือสำหรับจำนวนเต็มที่เข้ารหัสแบบ varint เท่านั้น ค่าที่บรรจุติดกันและมีแท็กและความยาวไบต์ทั้งหมดนำหน้า | ไม่มีข้อมูล | |||
| รอยยิ้ม | \x21 |
|
| IEEE แบบเดี่ยว/คู่BigDecimal | สตริง "สั้น" ที่มีคำนำหน้าความยาว (ไม่เกิน 64 ไบต์) สตริง "ยาว" ที่ลงท้ายด้วยเครื่องหมาย และการอ้างอิงย้อนกลับ (ไม่บังคับ) | อาร์เรย์เฮเทอโรจีนัสความยาวตามอำเภอใจพร้อมเครื่องหมายปลาย | คู่คีย์/ค่าที่มีความยาวไม่จำกัดพร้อมตัวระบุจุดสิ้นสุด |
| รูปแบบการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง (SDXF) | จำนวนเต็ม 24 บิตหรือ 32 บิตแบบมีเครื่องหมาย (Big-endian) | ดับเบิล IEEE บิ๊กเอนเดียน | เข้ารหัส แบบUTF-8หรือ ISO 8859-1 ก็ได้ | รายการองค์ประกอบที่มี ID และขนาดเหมือนกัน โดยมีส่วนหัวของอาร์เรย์ที่มีความยาวเป็นจำนวนเต็ม 16 นำหน้า | ส่วนย่อยหนึ่งๆ สามารถบรรจุส่วนย่อยอื่นๆ ได้ลึกถึงระดับใดก็ได้ | ||
| ประหยัด |
- ^รูปแบบข้อมูลใดๆ ที่อิงตาม XML สามารถบีบอัดหรือสร้างขึ้นใหม่ได้โดยใช้ EXI – "รูปแบบการแลกเปลี่ยน XML ที่มีประสิทธิภาพ (EXI) เวอร์ชัน 1.0 (ฉบับที่สอง) "[ 17 ] – ซึ่งเป็นมาตรฐานการบีบอัดไบนารีแบบ "Schema Informed" (ตรงข้ามกับ schema-required หรือ schema-less) สำหรับ XML
- ^ประเภท Ion พื้นฐานทั้งหมดมีรูปแบบว่าง (null variant) เป็นแท็ก 0xXf แท็กใดๆ ที่ขึ้นต้นด้วย 0x0X ยกเว้น 0x0f จะกำหนดช่องว่างที่ถูกละเว้น
- ^การตีความ Netstrings นั้นขึ้นอยู่กับแอปพลิเคชันหรือสคีมาโดยสิ้นเชิง
ดูเพิ่มเติม
ลิงก์ภายนอก
- ข้อเสนอ XML-QL ที่กล่าวถึงประโยชน์ของ XML
- กล้าที่จะทำให้น้อยลงด้วย XML
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล
นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (Data Serialization Formats ) ซึ่งเป็นวิธีการต่างๆ ในการแปลงวัตถุ ที่ซับซ้อน...
ภาพรวม
ชื่อ ผู้สร้าง-ผู้ดูแล อ้างอิงจาก ได้มาตรฐานแล้วใช่ไหม? ข้อกำหนด เลขฐานสอง ? อ่านง่ายสำหรับมนุษย์ ใช่ไหม? รองรับ การอ้างอิง หรือไม่? e Schema- IDL ?
ดูเพิ่มเติม
การเปรียบเทียบภาษาการทำเครื่องหมายเอกสาร
ลิงก์ภายนอก
ข้อเสนอ XML-QL ที่กล่าวถึงประโยชน์ของ XML กล้าที่จะทำให้น้อยลงด้วย XML ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats&oldid=1360084802 "