Warum ist es BSON genannt?
-
30-09-2019 - |
Frage
So BSON ist JSON serialisiert oder?
{"hello": "world"}
? "\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"
Aber warum ist es Binary Json genannt? Was bedeutet binäre steht für?
Ich neige dazu, immer zu assoziieren binär mit 10101010101. Aber die BSON Serialisierungsformat oben war nicht in 101.010.101.010 Form.
Könnte jemand mir erklären, was das Binary hier Mittel so verstehe ich, warum es Binary JSON genannt wird?
Lösung
Es ist binär als zu Text gegenüber. Während JSON Menschen lesbaren Text ist, ist BSON Binärdaten (nur Bytes). Sie könnten es schreiben als 1001010 usw., aber es ist häufiger jedes Byte zu einem Zeitpunkt, zu zeigen (so \ x16 nur hex 16, das heißt das Dezimalsystem Byte 22). Im Grunde genommen „binären“ hier verwendet wird, es mit Textdaten zu vergleichen, um nicht zu sagen, dass es eigentlich Basis 2 im Besonderen.
Das bedeutet, dass Sie nur BSON in Situationen verwenden können, wo Sie beliebige binäre Daten transportieren können. Zum Beispiel, wenn Sie einbetten BSON in einem XML-Dokument wollte (aus irgendeinem Grund!) Müssten Sie base64 es zuerst codieren, da XML ein textbasierte Darstellung ist.
Andere Tipps
Binary ist wirklich eine falsche Bezeichnung, da alles auf Ihrem Computer ist „binary“ auf einer bestimmten Ebene. Binary, wenn es um die Formate Datei oder Netzwerk-Stream, mittels nicht-einfach-Mensch-verständlich. Es neigt auch dazu, kompakt zu sein.
Beispiele für Text- oder "human readable" (human verständlich) Datei- und Stream-Formate:
Als Beispiele für "binäre" Datei- und Stream-Formate:
Die Sache des meisten erwähnen ist hier, dass die menschlichen verständlich Formate viel weniger Erklärung benötigen, wenn Sie sie einfach offen knacken und zu lesen beginnen. Binärdateiformate könnten ganze Bücher müssen erklären:)
Ein Format ist nicht unbedingt rein „binäres“ oder rein menschlich verständlich, though. Zum Beispiel könnten Sie wahrscheinlich ohne Leerzeichen, die repräsentieren eine Reihe von einstelligen Zahlen eine Reihe von einstelligen Zahlen verstehen. Sie könnten wahrscheinlich nicht eine Reihe von 48 Zahlen verstehen (ohne Leerzeichen), die x, y und z-Werte für 16 3d Eckpunkte darstellen, auch wenn man sie „lesen“ können. Außerdem gibt es Skeet Beispiel codiert „binäre“ Daten, vor allem, wenn es in einem menschlicheren verständlichen Format eingebettet ist.
Der Grund, es heißt ‚binäre‘ wird bereits erläutert. Grundsätzlich ist es nicht wörtlich, damit UNIX-Unterscheidung (binär vs Textdateien)
Aber JSON Teil ist seltsam, wie gut, da BSON JSON ist nicht - es ist weder Teilmenge noch Obermenge. Es hat viele weitere Datentypen, es ist also eine Art Obermenge; aber es nicht auch alle rechtlichen JSON unterstützt aufgrund von Einschränkungen auf Dinge wie Eigenschaftsnamen und String-Wert Längenbeschränkungen.