JSON / BSON versus MONGODB
JSON, descripción funcional.
JSON (JavaScript Object Notation) es un formato ligero de definición de documentos e intercambio de información de fácil acceso para los seres humanos, y fácil de analizar y generar para las máquinas.
1. Estructura Basada en Pares Clave-Valor
- JSON organiza los datos en pares clave-valor, donde las claves (o nombres) son cadenas (strings) y los valores pueden ser varios tipos de datos.
- Ejemplo:
json
{
"nombre": "Juan",
"edad": 30,
"casado": true
}
2. Tipos de Datos Soportados
- Strings): Siempre están entre comillas dobles.
- Numbers: Representan enteros o flotantes.
- Booleans: Pueden ser true o false.
- Arrays: Lista entre corchetes […]. Separadas por comas
"marcas": ["renault", "opel"]`
- Objects: Colecciones de pares clave-valor anidadas.
"coche": { "marca": "renault", "modelo": "leon" }`
- Null: Representa la ausencia de valor.
3. Intercambio de Datos
JSON se utiliza ampliamente para intercambiar datos entre servidores y aplicaciones web, facilitando la comunicación entre sistemas heterogéneos. Por ejemplo, al realizar una petición HTTP, los datos enviados y recibidos pueden estar en formato JSON.
{
"idUser": 0Xade365f,
"action": "login",
"details": {
"client": "Chrome",
"IP": "192.168.1.1"
}
}
4. Compatibilidad Multilenguaje
Aunque el nombre "JavaScript Object Notation" sugiere una fuerte relación con JavaScript, JSON es independiente del lenguaje Javacript y está soportado por muchos lenguajes de programación, como Python, Java, C#, PHP, etc...
5. Fácil de Leer y Escribir
JSON es un formato fácilmente legible tanto por humanos como por máquinas debido a su sintaxis sencilla, basada en objetos y arreglos similares a los utilizados en muchos lenguajes de programación.
6. Sin Esquema Estático
JSON es flexible porque no requiere un esquema rígido o predefinido como otros formatos de datos como XML (DTS). Esto permite agregar, omitir o cambiar la estructura de datos sin violar el formato.
7. Serialización y Deserialización
- Serialización: Proceso de convertir un objeto o estructura de datos en una cadena JSON afectos de ser almacenada o enviada.
- Deserialización: Proceso de convertir una cadena JSON en una estructura de datos que pueda ser utilizada dentro de un programa desde un almacen o un mensajero.
javascript
let objeto = { "name": "Ricky", "age": 35 };
let jsonString = JSON.stringify(objeto); // Serialización
let parsedObjeto = JSON.parse(jsonString); // Deserialización
8. Uso Común en APIs REST
JSON es el formato de datos preferido para las API RESTful debido a su simplicidad y eficiencia en la transmisión de datos entre el cliente y el servidor.
9. Limitaciones de JSON
- No soporta comentarios, lo que puede hacer que el archivo sea más difícil de documentar.
- No permite tipos de datos más complejos, como funciones o métodos.
- Aunque es flexible, la falta de un esquema formal puede generar inconsistencias si no se sigue un estándar en la estructura de datos.
json
Recomendado por LinkedIn
{
"name": "Ricky",
"age": 30,
"married": true,
"son": ["Adrianna", "Peter"],
"adress": {
"street": "Wellitong 123",
"Town": "London",
"country": "UK"
},
"phone": null
}
Que es BSON.
BSON (Binary JSON) es un formato binario para representar documentos estructurados similar a JSON, utilizado principalmente por MongoDB para almacenar y transferir datos de manera más eficiente. Aunque está inspirado en JSON, BSON incluye varias características adicionales que lo hacen más adecuado para el almacenamiento en bases de datos y para la transmisión de datos entre sistemas.
1. Formato Binario
- A diferencia de JSON, que es texto plano, BSON es binario, lo que permite la lectura y escritura de datos de manera más rápida y eficiente.
- Esto también implica que ocupa menos espacio en algunos casos, debido a la codificación binaria de tipos de datos.
2. Soporte para Tipos de Datos Adicionales
- Mientras que JSON solo admite tipos básicos como cadenas, números, booleanos y objetos, BSON admite tipos adicionales que son cruciales para bases de datos como MongoDB, incluyendo:
- Datos binarios (Binary Data).
- Enteros de 32 y 64 bits.
- Fechas (representadas como milisegundos desde el 1 de enero de 1970).
- Objeto Id (`ObjectId`), que es un identificador único de 12 bytes utilizado internamente.
- Decimales de precisión arbitraria.
- Null y Booleanos.
- Arrays y Objetos (similares a JSON).
3. Eficiencia en el Espacio
- Aunque BSON puede ocupar más espacio en comparación con JSON debido a la sobrecarga adicional de metadatos (por ejemplo, almacenamiento del tamaño del documento y de los campos), su representación binaria permite que ciertos tipos de datos (como enteros y fechas) se almacenen de manera más eficiente.
- Para datos numéricos grandes o binarios, BSON tiende a ser más compacto.
4. Facilidad de Serialización y Deserialización
- BSON es rápido tanto para serializar (convertir estructuras de datos a BSON) como para deserializar (reconstruir estructuras de datos a partir de BSON).
- Esto es crucial para una base de datos como MongoDB, que necesita manejar grandes volúmenes de datos y responder a consultas rápidamente.
5. Ordenación de Campos
- En BSON, los campos dentro de un objeto se almacenan en el orden en que fueron insertados. Esto permite una lectura más eficiente, ya que MongoDB no tiene que reorganizar los campos al leer los documentos.
6. Desarrollo Pensado para Bases de Datos
- BSON fue diseñado específicamente para ser eficiente en sistemas de bases de datos como MongoDB. Su estructura interna permite búsquedas, indexación y almacenamiento eficiente.
- Por ejemplo, MongoDB utiliza ObjectId en BSON para generar identificadores únicos de manera eficiente y compacta.
Ejemplo Comparativo JSON vs. BSON:
- JSON:
{
"name": "Ricky",
"age": 30,
"married": true,
"date": "2023-09-05T14:00:00Z"
}
- BSON:
- Internamente en MongoDB, este JSON se convierte a un formato binario, donde age se almacena como un entero de 32 bits, married como un booleano, y date como un valor binario de fecha, optimizando espacio y tiempo de acceso.
Uso de BSON en MongoDB:
- Almacenamiento: MongoDB almacena sus documentos en BSON para que puedan ser manipulados y consultados de manera eficiente.
- Transmisión de Datos: Cuando MongoDB interactúa con aplicaciones, los datos se transfieren en BSON, lo que permite una comunicación rápida entre el servidor y el cliente.