BSON ( / ˈ b iː s ə n / ; Binary JSON ) [ 2 ] es un formato de intercambio de datos informáticos que extiende JSON . Es una forma binaria para representar estructuras de datos simples o complejas, incluyendo matrices asociativas (también conocidas como pares nombre-valor ), matrices indexadas de enteros y un conjunto de tipos escalares fundamentales . BSON se originó en 2009 en MongoDB . Varios tipos de datos escalares son de particular interés para MongoDB y el formato se utiliza tanto como formato de almacenamiento de datos como de transferencia de red para la base de datos MongoDB, pero puede utilizarse de forma independiente fuera de MongoDB. Hay implementaciones disponibles en una variedad de lenguajes como C , C++ , C# , D , Delphi , Erlang , Go , Haskell , Java , JavaScript , Julia , Lua , OCaml , Perl , PHP , Python , Ruby , Rust , Scala , Smalltalk y Swift . [ 3 ]
Tipos de datos y sintaxis
BSON tiene una especificación publicada. [ 4 ] [ 5 ] El elemento superior de la estructura debe ser de tipo objeto BSON y contiene uno o más elementos, donde un elemento consta de un nombre de campo, un tipo y un valor. Los nombres de los campos son cadenas. Los tipos incluyen:
- Cadena Unicode (utilizando la codificación UTF-8 )
- entero de 32 bits
- entero de 64 bits
- doble ( número de punto flotante IEEE 754 de 64 bits , incluyendo NaN/Inf)
- decimal128 ( número de punto flotante IEEE 754-2008 de 128 bits ; variante decimal entera binaria (BID)), adecuado como portador de datos financieros sensibles a la posición decimal y números de precisión arbitraria con 34 dígitos decimales de precisión, un valor máximo de aproximadamente 10 6145
- Fecha y hora en UTC (número entero con signo de 64 bits que representa los milisegundos transcurridos desde la época Unix ).
- matriz de bytes (para datos binarios arbitrarios)
- Booleano (
trueyfalse) - nulo
- objeto BSON
- Matriz BSON
- Código JavaScript
- Datos binarios MD5
- Expresión regular ( expresiones regulares compatibles con Perl (" PCRE ") versión 8.41 con soporte UTF-8) [ 6 ]
Una diferencia importante con respecto a JSON es que BSON contiene tipos que no están presentes en JSON (por ejemplo, fecha y hora, matriz de bytes y números de coma flotante IEEE 754) y ofrece un manejo estricto de tipos para varios tipos numéricos en lugar de un tipo "número" universal. Para situaciones en las que estos tipos adicionales deban representarse de forma textual, se puede utilizar el formato JSON extendido de MongoDB [ 7 ] .
Eficiencia
En comparación con JSON, BSON está diseñado para ser eficiente tanto en espacio de almacenamiento como en velocidad de escaneo. Los elementos grandes en un documento BSON se anteponen con un campo de longitud para facilitar el escaneo. En algunos casos, BSON utilizará más espacio que JSON debido a los prefijos de longitud y los índices de matriz explícitos. [ 2 ]
Ejemplo
Un documento como este {"hello": "world"}se almacenará como:
\x 16 \x 00 \x 00 \x 00 // tamaño total del documento \x 02 // 0x02 = tipo String hello\x 00 // nombre del campo \x 06 \x 00 \x 00 \x 00 world\x 00 // valor del campo (tamaño del valor, valor, terminador nulo) \x 00 // 0x00 = tipo EOO ('fin del objeto')Véase también
Referencias
- ↑ "Compatibilidad con BSON en ASP.NET Web API 2.1 - ASP.NET 4.x" . Microsoft Docs . 2014-01-20 . Consultado el 2010-01-12 .
- 1 2 "Serialización BSON (JSON binario)" . Consultado el 23 de noviembre de 2021 .
- ↑ "Proyectos de implementación de BSON" . Consultado el 24 de noviembre de 2021 .
- ↑ "BSON (JSON binario): Especificación" . bsonspec.org . Consultado el 24/11/2021 .
- ↑ "Introducción a NoSQL y MongoDB | ¿Qué es NoSQL? | InformIT" . www.informit.com . Consultado el 17 de enero de 2018 .
- ↑ "regex – Herramientas para representar expresiones regulares de MongoDB — Documentación de PyMongo 3.6.0" . api.mongodb.com . Archivado del original el 10 de mayo de 2016. Consultado el 17 de enero de 2018 .
- ↑ "Documentación JSON extendida de MongoDB" . docs.mongodb.com . Consultado el 3 de mayo de 2020 .
Enlaces externos
- Sitio web oficial
- Herramienta bsondump incluida con MongoDB
- JSON
- formatos de serialización de datos
- Bases de datos orientadas a documentos