กลับไปหน้าบทความ

อ่าน 3 นาที

การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล

นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (Data Serialization Formats ) ซึ่งเป็นวิธีการต่างๆ ในการแปลงวัตถุ ที่ซับซ้อน...

การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล

นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (Data Serialization Formats ) ซึ่งเป็นวิธีการต่างๆ ในการแปลงวัตถุ ที่ซับซ้อน ให้เป็นลำดับของบิตโดยไม่ได้รวมถึงภาษามาร์กอัปที่ใช้เฉพาะในรูปแบบไฟล์เอกสาร

ภาพรวม

ชื่อ ผู้สร้าง-ผู้ดูแล อ้างอิงจาก ได้มาตรฐานแล้วใช่ไหม? ข้อกำหนดเลขฐานสอง ? อ่านง่ายสำหรับมนุษย์ใช่ไหม? รองรับการอ้างอิงหรือไม่? eSchema- 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.1ISO , 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หรือแบบกำหนดเองผ่านECNXER , 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โครงสร้าง XMLDOM , SAX , StAX , XQuery , XPathไม่มีข้อมูล
สัญกรณ์ข้อมูลที่ขยายได้ (edn) ริช ฮิกกี้ / ชุมชนโคลจูร์ โคลจูร์ใช่ ข้อกำหนดอย่างเป็นทางการของรุ่นเลขที่ ใช่ เลขที่ เลขที่ Clojure, Ruby, Go, C++, Javascript, Java, CLR, ObjC, Python [ 3 ]เลขที่
แฟลตบัฟเฟอร์Google ไม่มีข้อมูลเลขที่ 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สคีมา XMLDOM , 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 ไม่มีข้อมูลใช่ เลขที่ ใช่ ใช่ ใช่ เลขที่ ใช่ ไม่มีข้อมูล
พิคเคิล (ไพธอน)กุยโด ฟาน รอสซัมไพธอนโดยพฤตินัยในฐานะPEPsPEP 3154 – โปรโตคอล Pickle เวอร์ชัน 4ใช่ เลขที่ ใช่[ 5 ]เลขที่ ใช่ เลขที่
รายการอสังหาริมทรัพย์NeXT (ผู้สร้าง) Apple (ผู้ดูแลรักษา) ? บางส่วน DTD สาธารณะสำหรับรูปแบบ XMLใช่ใช่เลขที่ ? Cocoa , CoreFoundation , OpenStep , GnuStepเลขที่
โปรโตคอลบัฟเฟอร์ (protobuf) Googleไม่มีข้อมูลเลขที่ คู่มือสำหรับนักพัฒนา: การเข้ารหัส , ข้อกำหนด 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 , สคีมา XMLDOM , 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 NGDOM , 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 , คำจำกัดความประเภทภาษาในตัว) เลขที่ เลขที่
ชื่อ ผู้สร้าง-ผู้ดูแล อ้างอิงจาก ได้มาตรฐานแล้วใช่ไหม? ข้อกำหนดเลขฐานสอง ? อ่านง่ายสำหรับมนุษย์ใช่ไหม? รองรับการอ้างอิงหรือไม่? eSchema- IDL ? APIมาตรฐานรองรับการดำเนินการ แบบไม่ต้องคัดลอกข้อมูล
  1. ^รูปแบบเริ่มต้นปัจจุบันคือไบนารี
  2. รูปแบบ "คลาสสิ ก " คือข้อความธรรมดา และยังรองรับรูปแบบ XML ด้วย
  3. ^ในทางทฤษฎีแล้วเป็นไปได้เนื่องจากแนวคิดเชิงนามธรรม แต่ไม่มีการนำระบบไปใช้จริง
  4. ^รูปแบบหลักคือไบนารี่ แต่มีรูปแบบข้อความและ JSON ให้เลือกใช้ [ 8 ] [ 9 ]
  5. ^หมายความว่าเครื่องมือ/ไลบรารีทั่วไปรู้วิธีเข้ารหัส ถอดรหัส และอ้างอิงถึงข้อมูลอื่นในเอกสารเดียวกัน เครื่องมืออาจต้องการIDLแต่ไม่ต้องการอะไรมากกว่านั้น ไม่รวมเทคนิคการอ้างอิงแบบกำหนดเองที่ไม่เป็นมาตรฐาน
  6. ^ ASN.1 มี X.681 (ระบบวัตถุข้อมูล), X.682 (ข้อจำกัด) และ X.683 (การกำหนดพารามิเตอร์) ที่อนุญาตให้ระบุประเภทเปิดได้อย่างแม่นยำ โดยที่ประเภทของค่าสามารถระบุได้ด้วยจำนวนเต็ม,OIDเป็นต้น OID เป็นรูปแบบมาตรฐานสำหรับตัวระบุที่ไม่ซ้ำกันทั่วโลก รวมถึงเป็นสัญกรณ์มาตรฐาน ("การอ้างอิงแบบสัมบูรณ์") สำหรับการอ้างอิงส่วนประกอบของค่า ตัวอย่างเช่น PKIX ใช้สัญกรณ์ดังกล่าวใน RFC 5912 ด้วยสัญกรณ์ดังกล่าว (ข้อจำกัดเกี่ยวกับประเภทพารามิเตอร์โดยใช้ชุดวัตถุข้อมูล) เครื่องมือ/ไลบรารี ASN.1 ทั่วไปสามารถเข้ารหัส/ถอดรหัส/แก้ไขการอ้างอิงภายในเอกสารได้โดยอัตโนมัติ
  7. ^รูปแบบหลักคือไบนารี มีตัวเข้ารหัส JSON ให้ใช้งาน [ 10 ]
  8. ^รูปแบบหลักคือไบนารี แต่ก็มีรูปแบบข้อความให้เลือกใช้ด้วย

การเปรียบเทียบไวยากรณ์ของรูปแบบที่มนุษย์อ่านได้

รูปแบบ โมฆะบูลีนจริง บูลีนเท็จ จำนวนเต็มจุดลอยตัวสตริงอาร์เรย์อาร์เรย์แบบเชื่อมโยง / อ็อบเจ็กต์
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 (หรือองค์ประกอบว่างในแถว) a1อะ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
เอดเอ็นniltruefalse685230-6852306.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]}
ไอออน

nullnull.nullnull.boolnull.intnull.floatnull.decimalnull.timestampnull.stringnull.symbolnull.blobnull.clobnull.structnull.listnull.sexp

truefalse685230-6852300xA74AE0b1110100101011106.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,,,,เอ
เจซอนnulltruefalse685230-6852306.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 "เอ ถึง ซี"

(true, null, -42.1e7, "A to Z")

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}} }
รูปแบบการซีเรียลไลซ์ PHPN;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>
บัฟเฟอร์โปรโตคอลไม่มีข้อมูลtruefalse685230-68523020.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
การแสดงออกของ SNILnilT#tเอฟtrueNIL#fเอฟfalse6852306.8523015e+5abc"abc"#616263#3:abc{MzphYmM=}|YWJj|(T NIL -42.1e7 "A to Z")((42 T) ("A to Z" (1 2 3)))
ทอมล์ไม่มีข้อมูลtruefalse685230+685_230-6852300x_0A_74_AE0b1010_0111_0100_1010_11106.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 />เอtruefalse6852306.8523015e+5A 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>
  1. ^ โดยทั่วไปแล้ว เครื่องมือ ผูกข้อมูล XMLจะถอดรหัสองค์ประกอบ XML ที่ถูกละเว้นเป็นค่า NULL ตัวอย่างที่แสดงในที่นี้คือการเข้ารหัสอีกแบบหนึ่งที่เป็นไปได้XML schemaไม่ได้กำหนดการเข้ารหัสสำหรับชนิดข้อมูลนี้
  2. ^ข้อกำหนด RFC CSV ครอบคลุมเฉพาะตัวคั่น บรรทัดใหม่ และเครื่องหมายอัญประกาศเท่านั้น ไม่ได้ครอบคลุมการแปลงโครงสร้างข้อมูลที่
  3. ^ข้อกำหนดnetstringsครอบคลุมเฉพาะสตริงไบต์สิ่งอื่นใดนอกเหนือจากนี้อยู่นอกขอบเขตของข้อกำหนดนี้
  4. PHP จะแปลงเลขทศนิยมเป็นค่าอื่นได้อย่างถูกต้อง แต่จะแปลงกลับเป็นค่าทศนิยมเต็มจำนวน ตัวอย่างเช่น 3.14 จะถูกแปลงเป็นค่าอื่น3.140 000 000 000 000 124 344 978 758 017 532 527 446 746 826 171 875 .
  5. ^ เครื่องมือ การผูกข้อมูล XMLและอนุกรม SOAPโครงสร้างข้อมูลการเขียนโปรแกรมเป็น XML ได้อย่างปลอดภัยตามประเภทภาพแสดงค่า XML ที่สามารถใส่ลงในองค์ประกอบและแอตทริบิวต์ของ XML ได้
  6. ^ไวยากรณ์นี้ไม่สอดคล้องกับ Internet-Draft แต่ถูกใช้ในภาษาLispสำเนียง

การเปรียบเทียบรูปแบบไบนารี

รูปแบบ โมฆะบูลีนจำนวนเต็มจุดลอยตัวสตริงอาร์เรย์อาร์เรย์แบบเชื่อมโยง / อ็อบเจ็กต์
ASN.1 ( การเข้ารหัส BER , PERหรือOER ) ประเภท NULLบูลีน :
  • BER: เท่ากับ 1 ไบต์ในรูปแบบไบนารี;
  • PER: เท่ากับ 1 บิต;
  • OER: ขนาด 1 ไบต์
จำนวนเต็ม :
  • BER: การแสดงผลเลขฐานสองแบบบิ๊กเอนเดียนที่มีความยาวแปรผันได้ (สูงสุด 2² 1024 บิต );
  • PER แบบไม่จัดแนว: จำนวนบิตคงที่หากชนิดข้อมูลจำนวนเต็มมีช่วงจำกัด; จำนวนบิตแปรผันหากเป็นอย่างอื่น;
  • PER Aligned: จำนวนบิตคงที่หากชนิดข้อมูลจำนวนเต็มมีช่วงจำกัดและขนาดของช่วงน้อยกว่า 65536; จำนวนอ็อกเท็ตแปรผันได้ในกรณีอื่น ๆ
  • OER: 1, 2 หรือ 4 ไบต์ (ทั้งแบบมีเครื่องหมายและไม่มีเครื่องหมาย) หากชนิดข้อมูลจำนวนเต็มมีช่วงค่าที่จำกัดซึ่งพอดีกับจำนวนไบต์นั้น มิฉะนั้นจะเป็นจำนวนไบต์ที่เปลี่ยนแปลงได้
จริง :
  • ค่าจริงฐาน 10 จะถูกแสดงเป็นสตริงอักขระในรูปแบบ ISO 6093
  • ค่าจริงแบบไบนารีจะถูกแสดงในรูปแบบไบนารีซึ่งประกอบด้วยแมนทิสซา ฐาน (2, 8 หรือ 16) และเลขชี้กำลัง
  • ค่าพิเศษNaN, -INF, +INFและศูนย์ลบก็ได้รับการสนับสนุนเช่นกัน
รองรับประเภทข้อมูลที่ถูกต้องหลายประเภท ( 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 ไบต์)
  • จริง:\xf5
  • เท็จ:\xf4

(1 ไบต์)

  • เครื่องหมายบวก/ลบขนาดเล็ก\x00\x17& \x20\x37(1 ไบต์)
  • 8 บิต: ค่าบวก\x18, ค่าลบ\x38(+ 1 ไบต์)
  • 16 บิต: ค่าบวก\x19, ค่าลบ\x39(+ 2 ไบต์)
  • 32 บิต: ค่าบวก\x1A, ค่าลบ\x3A(+ 4 ไบต์)
  • 64 บิต: ค่าบวก\x1Bค่าลบ\x3B(+ 8 ไบต์)
  • ค่า x ติดลบจะถูกเข้ารหัสเป็น (−x − 1)
  • IEEE half/single/double \xf9\xfb(+ 2–8 ไบต์)
  • เลขฐานสิบและเลขทศลอยขนาดใหญ่ (4 ไบต์ขึ้นไป) จะถูกเข้ารหัสเป็น\xc4แท็ก + อาร์เรย์ 2 รายการของแมนทิสซาและเลขชี้กำลังที่เป็นจำนวนเต็ม
  • ความยาวและเนื้อหา (ค่าใช้จ่ายเพิ่มเติม 1–9 ไบต์)
  • ไบต์สตริง\x40\x5f
  • ยูทีเอฟ-8\x60\x7f
  • เส้นด้ายบางส่วนที่ไม่แน่นอน\x5fและ\x7fเย็บเข้าด้วยกันจนกระทั่ง\xff...
  • ความยาวและจำนวนชิ้น\x80\x9e
  • รายการไม่จำกัดระยะเวลา\x9fสิ้นสุดลงด้วย\xffรายการใหม่
  • ความยาว (เป็นคู่) และจำนวนชิ้น\xa0\xbe
  • แผนที่แบบไม่จำกัด\xbfถูกยุติโดย\xffคีย์
การแลกเปลี่ยน XML ที่มีประสิทธิภาพ (EXI) [ a ]

(รูปแบบค่าคำศัพท์ที่ไม่ได้รับการรักษาไว้)

xsi:nil ไม่ได้รับอนุญาตในบริบทไบนารี จำนวนเต็ม 1-2 บิตที่ถูกตีความว่าเป็นค่าบูลีน เครื่องหมายบูลีน บวกกับอ็อกเท็ต 7 บิตที่มีความยาวตามอำเภอใจ ซึ่งจะถูกแยกวิเคราะห์จนกว่าบิตที่มีนัยสำคัญสูงสุดจะเป็น 0 ในรูปแบบ little-endian โครงสร้างข้อมูลสามารถกำหนดจุดศูนย์เป็นตัวเลขใดก็ได้ตามอำเภอใจ

ค่าที่ไม่มีเครื่องหมายจะข้ามแฟล็กบูลีนไป

  • Float: ตัวเลขหลัก (mantissa) และตัวเลขชี้กำลัง (exponent) เป็นจำนวนเต็ม
  • เลขฐานสิบ: เครื่องหมายบูลีน, ค่าจำนวนเต็ม, ค่าทศนิยมของจำนวนเต็ม
ยูนิโค้ดที่เข้ารหัสด้วยจำนวนเต็มโดยมีคำนำหน้าความยาว จำนวนเต็มอาจแทนค่าการแจงนับหรือรายการในตารางสตริงก็ได้ ชุดรายการที่มีคำนำหน้าความยาว ไม่เป็นไปตามระเบียบปฏิบัติ
แฟลตบัฟเฟอร์เข้ารหัสเป็นการไม่มีฟิลด์ในออบเจ็กต์หลัก
  • จริง:\x01
  • เท็จ:\x00

(1 ไบต์)

ระบบ Little-endian 2's complementทั้งแบบมีลายเซ็นและไม่มีลายเซ็น ขนาด 8/16/32/64 บิต เข้ารหัสแบบ UTF-8โดยมีตัวเลขจำนวนเต็ม 32 บิตนำหน้า เพื่อแสดงความยาวของสตริงในหน่วยไบต์ เวกเตอร์ประเภทอื่น ๆ จะต้องระบุความยาวเป็นจำนวนเต็ม 32 บิต ซึ่งเท่ากับจำนวนองค์ประกอบนำหน้า ตาราง (ประเภทที่กำหนดโดยสคีมา) หรือเวกเตอร์ที่เรียงลำดับตามคีย์ (แผนที่/พจนานุกรม)
ไอออน[ 18 ]\x0f[]
  • จริง:\x11
  • เท็จ:\x10
  • บวก\x2xลบ\x3x
  • เลขศูนย์จะถูกเข้ารหัสในไบต์แท็กเสมอ
  • ตัวเลขจำนวนเต็มขนาดใหญ่ (BigInts) ที่มีความยาวมากกว่า 13 ไบต์ (10⁴ บิต) จะมีค่าโอเวอร์เฮดสำหรับความยาวมากกว่า 1 ไบต์
  • \x44(เลขทศลอย 32 บิต)
  • \x48(เลขทศลอย 64 บิต)
  • เลขศูนย์จะถูกเข้ารหัสในไบต์แท็กเสมอ
  • ยูทีเอฟ-8 :\x8x
  • ข้อความอื่นๆ:\x9x
  • ความยาวและค่าใช้จ่ายตามอำเภอใจ
\xbxความยาวและค่าใช้จ่ายเพิ่มเติมตามอำเภอใจ ความยาวเป็นอ็อกเท็ต
  • โครงสร้าง (ฟิลด์ที่มีหมายเลขกำกับ):\xdx
  • คำอธิบายประกอบ (ฟิลด์ที่มีชื่อ):\xex
ชุดข้อความ\xc0
  • จริง:\xc3
  • เท็จ:\xc2
  • ค่า "fixnum" แบบไบต์เดียว (ค่าตั้งแต่−32 ถึง 127 )
  • หรือ typecode (1 ไบต์) + big-endian (u)int8/16/32/64
รหัสประเภท (1 ไบต์) + IEEE ซิงเกิล/ดับเบิล
  • รหัสประเภท + สูงสุด 15 ไบต์
  • หรือ typecode + ความยาวเป็น uint8/16/32 + ไบต์;

การเข้ารหัสไม่ได้ระบุไว้[ 19 ]

  • ในรูปแบบ "fixarray" (คำนำหน้าไบต์เดียว + รายการในอาร์เรย์สูงสุด 15 รายการ)
  • หรือรหัสประเภท (1 ไบต์) + ความยาว 2–4 ไบต์ + จำนวนรายการในอาร์เรย์
  • ในรูปแบบ "fixmap" (คำนำหน้าแบบไบต์เดียว + คู่คีย์-ค่าได้สูงสุด 15 คู่)
  • หรือรหัสประเภท (1 ไบต์) + ความยาว 2–4 ไบต์ + คู่คีย์-ค่า
เน็ตสตริง[ c ]ไม่เป็นไปตามระเบียบปฏิบัติ ไม่เป็นไปตามระเบียบปฏิบัติ ไม่เป็นไปตามระเบียบปฏิบัติ ไม่เป็นไปตามระเบียบปฏิบัติ เข้ารหัสความยาวเป็นสตริง ASCII + ':' + ข้อมูล + ','

ความยาวจะนับเฉพาะไบต์ระหว่าง ':' และ ',' เท่านั้น

ไม่เป็นไปตามระเบียบปฏิบัติ ไม่เป็นไปตามระเบียบปฏิบัติ
ไบนารี OGDL
รายการคุณสมบัติ (รูปแบบไบนารี)
บัฟเฟอร์โปรโตคอล
  • ความยาวการเข้ารหัสตัวแปรแบบ 32 บิตที่มีเครื่องหมาย: การเข้ารหัส varint ของค่าที่เข้ารหัสแบบ "ZigZag"(n << 1) XOR (n >> 31)
  • ความยาวการเข้ารหัสแบบแปรผัน 64 บิตแบบมีเครื่องหมาย: การเข้ารหัส varint ของการเข้ารหัสแบบ "ZigZag"(n << 1) XOR (n >> 63)
  • ความยาวการเข้ารหัสคงที่ 32 บิต: 32 บิตในรูปแบบlittle-endian 2's complement
  • ความยาวการเข้ารหัสคงที่ 64 บิต: 64 บิตในรูปแบบlittle-endian 2's complement
เข้ารหัสแบบ UTF-8โดยมีตัวเลขจำนวนเต็มที่เข้ารหัสแบบ varint นำหน้า ความยาวของสตริงเป็นไบต์ ค่าที่ซ้ำกันที่มีแท็กเดียวกัน หรือสำหรับจำนวนเต็มที่เข้ารหัสแบบ varint เท่านั้น ค่าที่บรรจุติดกันและมีแท็กและความยาวไบต์ทั้งหมดนำหน้า ไม่มีข้อมูล
รอยยิ้ม\x21
  • จริง:\x23
  • เท็จ:\x22
  • ไบต์เดี่ยว "ขนาดเล็ก" (ค่า−16 – 15เข้ารหัสเป็น\xc0\xdf )
  • การเข้ารหัสแบบซิกแซกvarint(1–11 ไบต์ข้อมูล) หรือBigInteger
IEEE แบบเดี่ยว/คู่BigDecimalสตริง "สั้น" ที่มีคำนำหน้าความยาว (ไม่เกิน 64 ไบต์) สตริง "ยาว" ที่ลงท้ายด้วยเครื่องหมาย และการอ้างอิงย้อนกลับ (ไม่บังคับ) อาร์เรย์เฮเทอโรจีนัสความยาวตามอำเภอใจพร้อมเครื่องหมายปลาย คู่คีย์/ค่าที่มีความยาวไม่จำกัดพร้อมตัวระบุจุดสิ้นสุด
รูปแบบการแลกเปลี่ยนข้อมูลที่มีโครงสร้าง (SDXF) จำนวนเต็ม 24 บิตหรือ 32 บิตแบบมีเครื่องหมาย (Big-endian) ดับเบิล IEEE บิ๊กเอนเดียน เข้ารหัส แบบUTF-8หรือ ISO 8859-1 ก็ได้รายการองค์ประกอบที่มี ID และขนาดเหมือนกัน โดยมีส่วนหัวของอาร์เรย์ที่มีความยาวเป็นจำนวนเต็ม 16 นำหน้า ส่วนย่อยหนึ่งๆ สามารถบรรจุส่วนย่อยอื่นๆ ได้ลึกถึงระดับใดก็ได้
ประหยัด
  1. ^รูปแบบข้อมูลใดๆ ที่อิงตาม XML สามารถบีบอัดหรือสร้างขึ้นใหม่ได้โดยใช้ EXI – "รูปแบบการแลกเปลี่ยน XML ที่มีประสิทธิภาพ (EXI) เวอร์ชัน 1.0 (ฉบับที่สอง) "[ 17 ] – ซึ่งเป็นมาตรฐานการบีบอัดไบนารีแบบ "Schema Informed" (ตรงข้ามกับ schema-required หรือ schema-less) สำหรับ XML
  2. ^ประเภท Ion พื้นฐานทั้งหมดมีรูปแบบว่าง (null variant) เป็นแท็ก 0xXf แท็กใดๆ ที่ขึ้นต้นด้วย 0x0X ยกเว้น 0x0f จะกำหนดช่องว่างที่ถูกละเว้น
  3. ^การตีความ Netstrings นั้นขึ้นอยู่กับแอปพลิเคชันหรือสคีมาโดยสิ้นเชิง

ดูเพิ่มเติม

  • ข้อเสนอ XML-QL ที่กล่าวถึงประโยชน์ของ XML
  • กล้าที่จะทำให้น้อยลงด้วย XML
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats&oldid=1360084802 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบรูปแบบการจัดเรียงข้อมูล

นี่คือการเปรียบเทียบรูปแบบการจัดเรียงข้อมูล (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 "