¿Qué es una base de datos de documentos?

Una base de datos de documentos (también conocida como base de datos orientada a documentos o almacén de documentos) es una base de datos que almacena información en documentos.

Ejemplo de un documento JSON

Las bases de datos de documentos ofrecen una variedad de ventajas, que incluyen:

  • Un modelo de datos intuitivo que es rápido y fácil de trabajar para los desarrolladores
  • Un esquema flexible que permite que el modelo de datos evolucione a medida que cambian las necesidades de la aplicación.
  • La capacidad de escalar horizontalmente

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.

What son documentos?

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"
           }
        }
     ]
  }

Collections

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.

CRUD operaciones

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).

  • Crear: Los documentos se pueden crear en la base de datos. Cada documento tiene un identificador único.
  • Leer: Los documentos se pueden leer desde la base de datos. La API o el lenguaje de consulta permite a los desarrolladores consultar documentos utilizando sus identificadores únicos o valores de campo. Los índices se pueden agregar a la base de datos para aumentar el rendimiento de lectura.
  • Actualizar: Los documentos existentes se pueden actualizar, ya sea en su totalidad o en parte.
  • Eliminar: Los documentos se pueden eliminar de la base de datos.

What son las características clave de las bases de datos de documentos?

Las bases de datos de documentos tienen las siguientes características clave:

  • Modelo de documento: Los datos se almacenan en documentos (a diferencia de otras bases de datos que almacenan datos en estructuras como tablas o gráficos). Los documentos se asignan a objetos en los lenguajes de programación más populares, lo que permite a los desarrolladores desarrollar rápidamente sus aplicaciones.
  • Esquema flexible: Las bases de datos de documentos tienen esquemas flexibles, lo que significa que no todos los documentos de una colección necesitan tener los mismos campos. Tenga en cuenta que algunas bases de datos de documentos admiten validación de esquema, Por lo tanto, el esquema se puede bloquear opcionalmente.
  • Distribuidas y resistentes: Las bases de datos de documentos están distribuidas, lo que permite el escalado horizontal (normalmente más barato que el escalado vertical) y la distribución de datos. Las bases de datos de documentos proporcionan resistencia a través de la replicación.
  • Consultas a través de una API o lenguaje de consulta: Las bases de datos de documentos tienen una API o lenguaje de consulta que permite a los desarrolladores ejecutar las operaciones CRUD en la base de datos. Los desarrolladores tienen la capacidad de consultar documentos en función de identificadores únicos o valores de campo.

What hace que las bases de datos de documentos sean diferentes de las bases de datos relacionales?

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.

How Cuánto más fácil es trabajar con documentos que con tablas?

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

IDfirst_nameCorreo electrónicocélula
1Tomtom@example.com765-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

IDuser_idMe gusta
101Moda
111Balnearios
121Compras

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

IDuser_idNombreSocioEstadodate_founded
201Entretenimiento 1080JeanEn bancarrota19/05/2011
211Swag para preadolescentesNULLNULL01/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.

What son las relaciones entre las bases de datos de documentos y otras bases de datos?

El modelo de documento es un superconjunto de otros modelos de datos, incluidos los pares clave-valor, relacionales, objetos, gráficos y geoespaciales.

  • Los pares clave-valor se pueden modelar con campos y valores en un documento. Se puede indexar cualquier campo de un documento, lo que proporciona a los desarrolladores flexibilidad adicional a la hora de consultar los datos.
  • Los datos relacionales se pueden modelar de manera diferente (y algunos argumentarían de manera más intuitiva) manteniendo los datos relacionados juntos en un solo documento utilizando documentos y matrices incrustados. Los datos relacionados también se pueden almacenar en documentos separados, y referencias de base de datos se puede utilizar para conectar los datos relacionados.
  • Los documentos se asignan a objetos en los lenguajes de programación más populares.
  • Los nodos y/o bordes de Graph se pueden modelar como documentos. Los bordes también se pueden modelar a través de referencias de base de datos. Las consultas de gráficos se pueden ejecutar mediante operaciones como $graphLookup.
  • Los datos Geoespaciales se pueden modelar como matrices en documentos.

Un diagrama de cuatro niveles:
1. Modelo de documento
2. Pares clave-valor, relacional, objetos, gráfico, geoespacial
3. Interfaz unificada
4. Transaccional, Búsqueda, Móvil, Análisis en Tiempo Real, Lago de Datos 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.

Why no solo usar JSON en una base de datos relacional?

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.

Extensiones propietarias

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.


Primitive manejo de datos

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.


Poor calidad de datos y tablas rígidas

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.


Low rendimiento

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.


No escalado horizontal nativo

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.

What son las fortalezas y debilidades de las bases de datos documentales?

Las bases de datos de documentos tienen muchos puntos fuertes:

  • El modelo de documento es ubicuo, intuitivo y permite un rápido desarrollo de software.
  • El esquema flexible permite que el modelo de datos cambie a medida que cambian los requisitos de una aplicación.
  • Las bases de datos de documentos tienen API y lenguajes de consulta enriquecidos que permiten a los desarrolladores interactuar fácilmente con sus datos.
  • Las bases de datos de documentos son distribuidas (lo que permite el escalado horizontal, así como la distribución global de datos) y resistentes.

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.

What son los casos de uso de las bases de datos documentales?

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:

  • Vista única o centro de datos
  • Gestión y personalización de datos de clientes
  • Internet de las cosas (IoT) y datos de series temporales
  • Catálogos de productos y gestión de contenidos
  • Procesamiento de pagos
  • Aplicaciones móviles
  • Descarga de mainframe
  • Analítica operativa
  • Análisis en tiempo real

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.

Summary

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.

Pruebe el poder de los documentos de forma gratuita con nuestros datos de muestra en MongoDB Atlas

FAQ

¿Para qué sirven las bases de datos de documentos?

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 en todas las industrias. Visite Cuándo usar NoSQL para obtener más información.

¿Es MongoDB una base de datos de documentos?

Sí, MongoDB es una base de datos de documentos de propósito general.

¿Cuál es un ejemplo de base de datos de documentos?

MongoDB es la base de datos de documentos más popular del mundo. Otros ejemplos de bases de datos de documentos incluyen CouchDB y Firebase.

¿Cómo funcionan las bases de datos de documentos?

Las bases de datos de documentos almacenan información en documentos. Las bases de datos de documentos tienen API y lenguajes de consulta enriquecidos que se pueden usar para ejecutar las operaciones CRUD (crear, leer, actualizar y eliminar). Tienen esquemas flexibles, lo que permite a los desarrolladores evolucionar fácilmente sus modelos de datos a medida que cambian los requisitos de su aplicación.

¿Cómo se almacenan los documentos en una base de datos?

Las bases de datos de documentos almacenan información en documentos. Normalmente, cada documento contiene información sobre un objeto y los metadatos relacionados. Los documentos con contenidos similares se agrupan en colecciones. Los grupos de colecciones se almacenan en bases de datos.

¿Qué campo es siempre el primer campo de un 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.

¿Cómo se almacenan los datos de MongoDB?

MongoDB almacena datos en BSON (JSON binario).

¿MongoDB es de uso gratuito?

Sí, MongoDB tiene dos opciones gratuitas:

Base de datos documental vs. base de datos relacional

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.