Las bases de datos de documentos ofrecen una variedad de ventajas, que incluyen:
Debido a estas ventajas, las bases de datos de documentos son bases de datos de propósito general que se pueden utilizar en una variedad de casos de uso e industrias.
Las bases de datos de documentos se consideran no relacionales (o NoSQL) Bases. En lugar de almacenar datos en filas y columnas fijas, las bases de datos de documentos utilizan documentos flexibles. Las bases de datos de documentos son la alternativa más popular a las bases de datos tabulares y relacionales. Más información sobre las bases de datos NoSQL.
Un documento es un registro en una base de datos de documentos. Normalmente, un documento almacena información sobre un objeto y cualquiera de sus metadatos relacionados.
Los documentos almacenan datos en pares de campo-valor. Los valores pueden ser de varios tipos y estructuras, como cadenas, números, fechas, matrices u objetos. Los documentos se pueden almacenar en formatos como JSON, BSON, y XML.
A continuación se muestra un documento JSON que almacena información sobre un usuario llamado Tom.
{
"_id": 1,
"first_name": "Tom",
"email": "tom@example.com",
"celular": "765-555-5555",
"Me gusta": [
"moda",
"balnearios",
"De compras"
],
"Empresas": [
{
"name": "Entretenimiento 1080",
"partner": "Jean",
"status": "En bancarrota",
"date_founded": {
"$date": "2012-05-19T04:00:00Z"
}
},
{
"name": "Swag para preadolescentes",
"date_founded": {
"$date": "2012-11-01T04:00:00Z"
}
}
]
}
Una colección es un grupo de documentos. Las colecciones suelen almacenar documentos que tienen contenidos similares.
No todos los documentos de una colección deben tener los mismos campos, ya que las bases de datos de documentos tienen esquemas flexibles. Tenga en cuenta que algunas bases de datos de documentos proporcionan validación de esquema, Por lo tanto, el esquema se puede bloquear opcionalmente cuando sea necesario.
Siguiendo con el ejemplo anterior, el documento con información sobre Tom podría almacenarse en una colección llamada 'usuarios'. Se podrían agregar más documentos a la colección de "usuarios" para almacenar información sobre otros usuarios. Por ejemplo, el documento a continuación que almacena información sobre Donna podría agregarse a la colección de 'usuarios'.
{
"_id": 2,
"first_name": "Donna",
"email": "donna@example.com",
"cónyuge": "Joe",
"Me gusta": [
"balnearios",
"De compras",
"Tweeting en vivo"
],
"Empresas": [
{
"name": "Castle Realty",
"status": "Próspero",
"date_founded": {
"$date": "2013-11-21T04:00:00Z"
}
}
]
}
Tenga en cuenta que el documento de Donna no contiene los mismos campos que el documento de Tom. La colección "users" aprovecha un esquema flexible para almacenar la información que existe para cada usuario.
Las bases de datos de documentos suelen tener una API o un lenguaje de consulta que permite a los desarrolladores ejecutar las operaciones CRUD (crear, leer, actualizar y eliminar).
Las bases de datos de documentos tienen las siguientes características clave:
Tres factores clave diferencian las bases de datos documentales de las bases de datos relacionales:
1. La intuición del modelo de datos: Los documentos se asignan a los objetos en el código, por lo que es mucho más natural trabajar con ellos. No es necesario descomponer datos en tablas, ejecutar uniones costosas ni integrar una capa de mapeo relacional de objetos (ORM) independiente. Los datos a los que se accede juntos se almacenan juntos, por lo que los desarrolladores tienen menos código para escribir y los usuarios finales obtienen un mayor rendimiento.
2. La ubicuidad de los documentos JSON: JSON se ha convertido en un estándar establecido para el intercambio y almacenamiento de datos. Los documentos JSON son ligeros, independientes del idioma y legibles por humanos. Los documentos son un superconjunto de todos los demás modelos de datos, por lo que los desarrolladores pueden estructurar los datos de la manera que sus aplicaciones necesitan: objetos enriquecidos, pares clave-valor, tablas, datos geoespaciales y de series temporales, o los nodos y bordes de un gráfico.
3. La flexibilidad del esquema: El esquema de un documento es dinámico y autodescriptivo, por lo que los desarrolladores no necesitan predefinirlo primero en la base de datos. Los campos pueden variar de un documento a otro. Los desarrolladores pueden modificar la estructura en cualquier momento, evitando migraciones de esquemas disruptivas. Algunas bases de datos de documentos ofrecen validación de esquema Por lo tanto, opcionalmente puede aplicar las reglas que rigen las estructuras de los documentos.
Más información sobre NoSQL frente a bases de datos relacionales.
Por lo general, los desarrolladores consideran que trabajar con datos en documentos es más fácil e intuitivo que trabajar con datos en tablas. Los documentos se asignan a estructuras de datos en los lenguajes de programación más populares. Los desarrolladores no tienen que preocuparse por dividir manualmente los datos relacionados en varias tablas al almacenarlos o unirlos de nuevo al recuperarlos. Tampoco necesitan usar un ORM para manejar la manipulación de los datos por ellos. En su lugar, pueden trabajar fácilmente con los datos directamente en sus aplicaciones.
Echemos otro vistazo a un documento para un usuario llamado Tom.
Usuarios
{
"_id": 1,
"first_name": "Tom",
"email": "tom@example.com",
"celular": "765-555-5555",
"Me gusta": [
"moda",
"balnearios",
"De compras"
],
"Empresas": [
{
"name": "Entretenimiento 1080",
"partner": "Jean",
"status": "En bancarrota",
"date_founded": {
"$date": "2012-05-19T04:00:00Z"
}
},
{
"name": "Swag para preadolescentes",
"date_founded": {
"$date": "2012-11-01T04:00:00Z"
}
}
]
}
Toda la información sobre Tom se almacena en un solo documento.
Ahora consideremos cómo podemos almacenar esa misma información en una base de datos relacional. Comenzaremos creando una tabla que almacene la información básica sobre el usuario.
Usuarios
ID | first_name | Correo electrónico | célula |
---|---|---|---|
1 | Tom | tom@example.com | 765-555-5555 |
A un usuario le pueden gustar muchas cosas (lo que significa que hay una relación de uno a muchos entre un usuario y los Me gusta), por lo que crearemos una nueva tabla llamada "Me gusta" para almacenar los Me gusta de un usuario. La tabla Me gusta tendrá una clave externa que hace referencia a la columna ID de la tabla Usuarios.
Le gusta
ID | user_id | Me gusta |
---|---|---|
10 | 1 | Moda |
11 | 1 | Balnearios |
12 | 1 | Compras |
Del mismo modo, un usuario puede administrar muchos negocios, por lo que crearemos una nueva tabla llamada "Negocios" para almacenar información comercial. La tabla Negocios tendrá una clave externa que hace referencia a la columna "ID" en la tabla "Usuarios".
Empresas
ID | user_id | Nombre | Socio | Estado | date_founded |
---|---|---|---|---|---|
20 | 1 | Entretenimiento 1080 | Jean | En bancarrota | 19/05/2011 |
21 | 1 | Swag para preadolescentes | NULL | NULL | 01/11/2012 |
En este sencillo ejemplo, vemos que los datos sobre un usuario podrían almacenarse en un solo documento en una base de datos documental o en tres tablas en una base de datos relacional. Cuando un desarrollador desea recuperar o actualizar información sobre un usuario en la base de datos de documentos, puede escribir una consulta sin combinaciones. La interacción con la base de datos es sencilla y el modelado de los datos en la base de datos es intuitivo.
Visite Mapeo de términos y conceptos de SQL a MongoDB para obtener más información.
El modelo de documento es un superconjunto de otros modelos de datos, incluidos los pares clave-valor, relacionales, objetos, gráficos y geoespaciales.
The modelo de documento es un superconjunto de otros datos models
Debido a sus ricas capacidades de modelado de datos, las bases de datos de documentos son bases de datos de uso general que pueden almacenar datos para una variedad de casos de uso.
Dado que las bases de datos de documentos permiten a los desarrolladores crear más rápido, la mayoría de las bases de datos relacionales han agregado compatibilidad con JSON. Sin embargo, el simple hecho de agregar un tipo de datos JSON no aporta las ventajas de una base de datos con soporte nativo para JSON. ¿Por qué? Porque el enfoque relacional resta productividad a los desarrolladores, en lugar de mejorarla. Estas son algunas de las cosas con las que los desarrolladores tienen que lidiar.
Trabajar con documentos significa usar funciones SQL personalizadas y específicas del proveedor, que no son familiares para la mayoría de los desarrolladores y no funcionan con sus herramientas SQL favoritas. Agregue controladores JDBC/ODBC y ORM de bajo nivel y se enfrentará a procesos de desarrollo complejos que resultan en una baja productividad.
La presentación de datos JSON como cadenas y números simples en lugar de los tipos de datos enriquecidos compatibles con las bases de datos de documentos nativos, como MongoDB, hace que la computación, la comparación y la clasificación de datos sean complejas y propensas a errores.
Las bases de datos relacionales ofrecen poco para validar el esquema de los documentos, por lo que no hay forma de aplicar controles de calidad a los datos JSON. Y aún tiene que definir un esquema para los datos tabulares normales, con toda la sobrecarga adicional que conlleva cuando necesita modificar las tablas a medida que evolucionan las características de la aplicación.
La mayoría de las bases de datos relacionales no mantienen estadísticas sobre datos JSON, lo que impide que el planificador de consultas optimice las consultas en los documentos y que usted ajuste sus consultas.
Las bases de datos relacionales tradicionales no ofrecen ninguna forma de particionar (particionar) la base de datos en varias instancias para escalar a medida que crecen las cargas de trabajo. En su lugar, tiene que implementar la fragmentación usted mismo en la capa de la aplicación o confiar en costosos sistemas de escalado.
Las bases de datos de documentos tienen muchos puntos fuertes:
Estas fortalezas hacen que las bases de datos de documentos sean una excelente opción para una base de datos de propósito general.
Una debilidad común que la gente cita sobre las bases de datos de documentos es que muchas no admiten transacciones ACID de varios documentos. Estimamos que el 80%-90% de las aplicaciones que aprovechan el modelo de documento no necesitarán utilizar transacciones de documentos múltiples.
Tenga en cuenta que algunas bases de datos de documentos como MongoDB support multi-document ACID transactions.
Visite ¿Qué son las transacciones ACID? para obtener más información sobre cómo el modelo de documento elimina en gran medida la necesidad de transacciones de varios documentos y cómo MongoDB admite transacciones en los raros casos en los que son necesarias.
Las bases de datos de documentos son bases de datos de propósito general que sirven para una variedad de casos de uso para aplicaciones transaccionales y analíticas:
Visite Guía de casos de uso: dónde usar MongoDB para obtener más información sobre cada una de las aplicaciones enumeradas anteriormente.
Las bases de datos de documentos utilizan el modelo de datos de documentos intuitivo y flexible para almacenar datos. Las bases de datos de documentos son bases de datos de propósito general que se pueden utilizar para una variedad de casos de uso en industrias.
Comience a trabajar con bases de datos de documentos creando una base de datos en MongoDB Atlas, Plataforma de datos para desarrolladores de MongoDB. Atlas tiene un generoso nivel gratuito para siempre que puede usar para experimentar y explorar el modelo de documento.
En MongoDB, el primer campo de cada documento se denomina 'id'. El campo "id" sirve como identificador único para el documento. Consulte la documentación oficial de MongoDB para obtener más información.
Tenga en cuenta que cada sistema de gestión de bases de datos documentales tiene sus propios requisitos de campo.
MongoDB almacena datos en BSON (JSON binario).
Sí, MongoDB tiene dos opciones gratuitas:
La diferencia más obvia entre una base de datos de documentos y una base de datos relacional es la forma en que se modelan los datos. Las bases de datos de documentos suelen modelar datos mediante documentos flexibles similares a JSON con pares de campo-valor. Las bases de datos relacionales suelen modelar datos mediante tablas rígidas con filas y columnas fijas.