2010-08-24 17 views
9

Entonces BSON tiene serialización JSON ¿verdad?¿Por qué se llama BSON?

{"hello": "world"}"\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"

Pero por qué se llama binario JSON? ¿Qué significa binario?

Siempre tiendo a asociar binario con 10101010101. Pero el formato de serialización BSON anterior no estaba en forma 101010101010.

¿Podría alguien explicarme qué significa Binary, así que entiendo por qué se llama Binary JSON?

+3

'10101010101' es un número en base 2 (binario), no necesariamente" datos "binarios. –

Respuesta

20

Es binario en lugar de texto. Mientras que JSON es un texto legible por humanos, BSON es información binaria (solo bytes). Usted podría escribirlo como 1001010, etc., pero es más común mostrar cada byte a la vez (entonces \ x16 es solo hexadecimal 16, es decir, el octeto decimal 22). Básicamente, "binario" se usa aquí para compararlo con datos textuales, por no decir que en realidad es la base 2 en particular.

Esto significa que solo puede usar BSON en situaciones donde puede transportar datos binarios arbitrarios. Por ejemplo, si desea incrustar BSON en un documento XML (¡por alguna razón!), Primero debe codificarlo en base64, porque XML es una representación basada en texto.

4

Binario es realmente un nombre inapropiado, ya que todo en su computadora es "binario" en algún nivel. Binario, cuando se trata de formatos de flujo de archivos o de red, significa no fácilmente comprensible para los humanos. También tiende a ser compacto.

Ejemplos de Pruebas o "legibles" (humanos comprensibles) de archivos y flujo de formatos:

ejemplos de "binario "formatos de archivos y secuencias:

Lo de más señalar aquí es que los formatos comprensibles humanos necesitan mucho menos explicaciones si simplemente les revienta abrir y comenzar a leer. formatos de archivo binario puede ser que necesite libros enteros para explicar :)

Un formato no es necesariamente puramente "binario" o puramente humana comprensible, sin embargo. Por ejemplo, probablemente pueda entender una serie de números de un solo dígito sin espacios, que representan una matriz de números de un solo dígito. Probablemente no puedas entender una serie de 48 números (sin espacios), que representan valores x, y y z para 16 vértices 3d, aunque puedas "leerlos". Además, existe el ejemplo de Skeet de datos "binarios" codificados, especialmente si está incrustado en un formato comprensible más humano.

1

La razón por la que se llama 'binario' ya se explicó: básicamente, no es textual, por lo tanto, distinción de estilo unix (archivos binarios y de texto).

Pero la parte JSON también es impar, ya que BSON NO ES JSON, no es subconjunto ni superconjunto. Tiene muchos más tipos de datos, por lo que es una especie de superconjunto; pero tampoco admite todos los JSON legales debido a limitaciones en cosas como el nombre de la propiedad y las limitaciones de longitud del valor de cadena.

Cuestiones relacionadas