Introducción
Con capacidades únicas, las bases de datos NoSQL superan las limitaciones que se encuentran en el modelo de base de datos relacional. NoSQL es un término general para cuatro subconjuntos principales de bases de datos NoSQL:
- Bases de datos de valores-clave
- Bases de datos de columnas
- Bases de datos de gráficos
- Bases de datos de documentos
En este artículo, explicaremos qué es una base de datos de documentos, describiremos sus ventajas e inconvenientes y proporcionaremos ejemplos.
Definición de base de datos de documentos
Una base de datos de documentos es un tipo de base de datos NoSQL que almacena datos como documentos JSON en lugar de columnas y filas. JSON es un lenguaje nativo que se utiliza tanto para almacenar como para consultar datos. Estos documentos se pueden agrupar en colecciones para formar sistemas de bases de datos.
Cada documento consta de una serie de pares clave-valor. Este es un ejemplo de un documento que consta de 4 pares de valores clave:
{
"ID" : "001",
"Book" : "Java: The Complete Reference",
"Genre" : "Reference work",
"Author" : "Herbert Schildt",
}
El uso de JSON permite a los desarrolladores de aplicaciones almacenar y consultar datos en el mismo formato de modelo de documento que utilizan para organizar el código de su aplicación. El modelo de objetos se puede convertir a otros formatos, como JSON, BSON y XML.
Base de datos relacional versus documental
Los sistemas de gestión de bases de datos relacionales (RDBMS) se basan en el lenguaje de consulta estructurado (SQL). NoSQL no lo hace.
Un RDBMS se enfoca en crear relaciones entre archivos para almacenar y leer datos. Las bases de datos de documentos se centran en los datos en sí y las relaciones se representan con datos anidados.
Comparaciones clave entre bases de datos relacionales y de documentos:
RDBMS | Sistema de base de datos de documentos |
Estructurado en torno al concepto de relaciones. | Enfocado en datos en lugar de relaciones. |
Organiza los datos en tuplas (o filas). | Los documentos tienen propiedades sin definiciones teóricas, en lugar de filas. |
Define datos (relaciones de formularios) a través de restricciones y claves foráneas (por ejemplo, una tabla secundaria hace referencia a la tabla maestra a través de su ID). | No hay lenguaje DDL para definir esquemas. |
Utiliza DDL (lenguaje de definición de datos) para crear relaciones. | Relaciones representadas a través de datos anidados , no claves foráneas (cualquier documento puede contener otros anidados dentro de él, lo que genera una relación N:1 o 1:N entre las dos entidades del documento). |
Ofrece consistencia extrema , fundamental para algunos casos de uso, como la banca diaria. | Ofrece coherencia eventual con un período de inconsistencia. |
Características de las bases de datos de documentos
Las bases de datos de documentos proporcionan consultas rápidas, una estructura adecuada para el manejo de big data, indexación flexible y un método simplificado de mantenimiento de la base de datos. Es eficiente para aplicaciones web y ha sido completamente integrado por empresas de TI a gran escala como Amazon.
Aunque las bases de datos SQL tienen una gran estabilidad y potencia vertical, tienen dificultades con las bases de datos de gran tamaño. Los casos de uso que requieren acceso inmediato a los datos, como las aplicaciones de atención médica, se adaptan mejor a las bases de datos de documentos. Las bases de datos de documentos facilitan la consulta de datos con el mismo modelo de documento utilizado para codificar la aplicación.
Casos de uso de bases de datos de documentos
Casos generales de uso |
Perfiles de usuario | Extracción de grandes datos en tiempo real |
Bases de datos de libros | Datos de estructuras variables |
Gestión de contenidos | Catálogos |
Datos de los pacientes |
Cubriremos algunos de los casos de uso mencionados anteriormente con mayor detalle en las siguientes secciones.
Base de datos de libros
Tanto los sistemas de documentos relacionales como NoSQL se utilizan para formar una base de datos de libros, aunque de diferentes maneras.
El enfoque relacional representaría la relación entre libros y autores a través de tablas con IDs – un autor mesa y un Libros mesa. Obliga a cada autor a tener al menos una entrada en la tabla Libros al no permitir valores nulos.
En comparación, el modelo de documento le permite anidar . Muestra las relaciones de forma más natural y sencilla al garantizar que cada documento de autor tenga una propiedad llamado Libros , con una variedad de documentos de libros relacionados en la propiedad. Cuando busca un autor, aparece toda la colección de libros.
Gestión de contenidos
Los desarrolladores usan bases de datos de documentos para crear plataformas de transmisión de video, blogs y servicios similares. Cada archivo se almacena como un solo documento y la base de datos es más fácil de mantener a medida que el servicio evoluciona con el tiempo. Las modificaciones de datos significativas, como los cambios en el modelo de datos, no requieren tiempo de inactividad, ya que no es necesario actualizar el esquema.
Catálogos
Las bases de datos de documentos son mucho más eficientes que las bases de datos relacionales cuando se trata de almacenar y leer archivos de catálogo. Los catálogos pueden tener miles de atributos almacenados y las bases de datos de documentos brindan tiempos de lectura rápidos. En las bases de datos de documentos, los atributos relacionados con un solo producto se almacenan en un solo documento. La modificación de los atributos de un producto no afecta a otros documentos.
Ventajas y desventajas de la base de datos de documentos
A continuación se presentan algunas ventajas clave y desventajas de bases de datos de documentos:
Ventajas de la base de datos de documentos | Desventajas de la base de datos de documentos |
Sin esquema | Limitaciones de verificación de consistencia |
Creación y cuidado más rápidos | Deficiencias de atomicidad |
Sin claves foráneas | Seguridad |
Formatos abiertos | |
Versión integrada | |
Las ventajas y desventajas se explican con más detalle en las siguientes secciones.
Ventajas
- Sin esquema . No hay restricciones en el formato y la estructura del almacenamiento de datos. Esto es bueno para retener datos existentes en volúmenes masivos y diferentes estados estructurales, especialmente en un sistema en continua transformación.
- Creación y coche más rápidos mi. Se requiere un mantenimiento mínimo una vez que crea el documento, que puede ser tan simple como agregar su objeto complejo una vez.
- Sin claves foráneas . Con la ausencia de esta relación dinámica, los documentos pueden ser independientes entre sí.
- Formatos abiertos . Un proceso de compilación limpio que usa XML, JSON y otros derivados para describir documentos.
- Versión integrada . A medida que sus documentos crecen en tamaño, también pueden crecer en complejidad. El control de versiones reduce los conflictos.
Desventajas
- Limitaciones de comprobación de coherencia . En el ejemplo de caso de uso de la base de datos de libros anterior, sería posible buscar libros de un autor inexistente. Puede buscar en la colección de libros y encontrar documentos que no estén conectados a una colección de autor.
Cada lista también puede duplicar la información del autor de cada libro. Estas inconsistencias no son significativas en algunos contextos, pero en los estándares superiores de las auditorías de consistencia de RDB, dificultan seriamente el rendimiento de la base de datos.
- Deficiencias de atomicidad . Los sistemas relacionales también le permiten modificar datos desde un lugar sin necesidad de JOIN. Todas las consultas de lectura nuevas heredarán los cambios realizados en sus datos a través de un solo comando (como actualizar o eliminar una fila).
Para las bases de datos de documentos, un cambio que involucre dos colecciones requerirá que ejecute dos consultas separadas (por colección). Esto rompe los requisitos de atomicidad.
- Seguridad . Casi la mitad de las aplicaciones web actuales filtran activamente datos confidenciales. Los propietarios de bases de datos NoSQL, por lo tanto, deben prestar especial atención a las vulnerabilidades de las aplicaciones web.
Mejores bases de datos de documentos
Amazon DocumentDB
Características:
- Compatible con MongoDB
- Totalmente administrado
- Alto rendimiento con consultas de baja latencia
- Cumplimiento y seguridad sólidos
- Alta disponibilidad
Usado para:
- Amazonas todo el equipo de desarrollo utiliza Amazon DocumentDB para aumentar la agilidad y la productividad. Necesitaban índices anidados, agregaciones y consultas ad hoc, con un proceso completamente administrado.
- La BBC lo usa para consultar y almacenar datos de múltiples flujos de datos y compilarlos en feeds de clientes únicos. Migraron a Amazon DocumentDB para obtener los beneficios de un servicio totalmente administrado con alta disponibilidad, durabilidad y copias de seguridad predeterminadas.
- Rappi cambió a Amazon DocumentDB para reducir el tiempo de codificación, Dow Jones para simplificar las operaciones y Samsung para un mejor manejo de troncos grandes con mayor flexibilidad.
MongoDB
Características:
- Consultas ad hoc
- Indización optimizada para consultas
- fragmentación
- Equilibrio de carga
Usado para:
- Forbes redujo el tiempo de compilación en un 58 % y obtuvo un aumento del 28 % en las suscripciones debido a la creación más rápida de nuevas funciones, incorporaciones más simples y un mejor manejo de tipos de datos cada vez más diversos.
- Toyota descubrió que era mucho más sencillo para los desarrolladores trabajar a altas velocidades mediante el uso de documentos JSON naturales. Se dedica más tiempo a generar valor comercial en lugar de modelar datos.
Cosmos DB
Características:
- Cualquier escala de lectura rápida
- 99,999 % de disponibilidad
- Totalmente administrado
- API de núcleo nativo/NoSQL
- Sin servidor, rentable/escalado al instante
Usado para:
- Coca-Cola obtiene información en minutos, lo que facilita la escala global. Antes de migrar a Cosmos DB, tomó horas.
- ASOS necesitaba una base de datos distribuida que escalara de manera flexible y sin problemas para manejar más de 100 millones de clientes minoristas globales.
ArangoDB
Características:
- Validaciones de esquema
- Diversa indexación
- Clústeres de distribución rápida
- Conjuntos de datos muy grandes y eficientes
- Admite múltiples modelos de datos NoSQL
- Combinar modelos en consultas individuales
Usado para:
- Universidad de Oxford reducción de la asistencia al hospital y mejores resultados de las pruebas mediante el desarrollo de una prueba de evaluación basada en la web para enfermedades cardiopulmonares.
- Estadísticas de vuelo transformó datos de vuelo fragmentados (estado del vuelo, clima, demoras en aeropuertos y datos de referencia) en un solo estándar, lo que permitió obtener resultados analíticos, predictivos y precisos.
Servidor Couchbase
Características:
- Capacidad para administrar implementaciones globales
- Agilidad y flexibilidad extremas
- Rápido a gran escala
- Fáciles integraciones en la nube
Usado para:
- BT usó el modelo de datos flexible de Couchbase para acelerar su capacidad de entregar contenido de alto rendimiento mientras escalaba con facilidad frente a los picos de demanda.
- Ebay migró de Oracle para obtener una solución más rentable y con características aplicables (de su sistema de documento/almacenamiento de clave-valor). El rendimiento y la disponibilidad de las aplicaciones aumentaron, mientras que los desarrolladores podían usar sus conocimientos de SQL para acelerar su canalización de CI/CD a través de un esquema más flexible.
CouchDB
Características:
- GUI basada en navegador
- Ofrece replicaciones más simples
- Autenticación de usuario
- Propiedades de ACID
Usado para:
- Meebo, la plataforma social, usó CouchDB para la interfaz basada en web y sus aplicaciones.
- La BBC usó CouchDB para sus plataformas de contenido dinámico.
¿Cómo elegir?
Las demandas críticas de su aplicación determinan cómo estructurar los datos. Algunas preguntas clave:
- ¿Leerás o escribirás más? Los sistemas relacionales son superiores si está escribiendo más, ya que evitan duplicaciones durante las actualizaciones.
- ¿Qué tan importante es la sincronización? Debido a su estructura ACID, los sistemas relacionales lo hacen mejor.
- ¿Cuánto necesitará transformar su esquema de base de datos en el futuro? Las bases de datos de documentos son una opción ganadora si trabaja con diversos datos a escala y requiere un mantenimiento mínimo.
Ni el documento ni el SQL son estrictamente mejores que el otro. La elección correcta depende de su caso de uso. Al tomar su decisión, considere los tipos de operaciones que se realizarán con mayor frecuencia.