stringtranslate.com

Base de datos orientada a documentos

Una base de datos orientada a documentos , o almacén de documentos , es un programa informático y un sistema de almacenamiento de datos diseñado para almacenar, recuperar y gestionar información orientada a documentos, también conocidos como datos semiestructurados . [1]

Las bases de datos orientadas a documentos son una de las categorías principales de bases de datos NoSQL , y la popularidad del término "base de datos orientada a documentos" ha crecido [2] con el uso del término NoSQL en sí. Las bases de datos XML son una subclase de bases de datos orientadas a documentos que están optimizadas para trabajar con documentos XML . Las bases de datos de gráficos son similares, pero agregan otra capa, la de relaciones , que les permite vincular documentos para un recorrido rápido.

Las bases de datos orientadas a documentos son inherentemente una subclase del almacén de clave-valor , otro concepto de base de datos NoSQL. La diferencia [ contradictoria ] radica en la forma en que se procesan los datos; en un almacén de clave-valor, los datos se consideran inherentemente opacos para la base de datos, mientras que un sistema orientado a documentos se basa en la estructura interna del documento para extraer metadatos que el motor de la base de datos utiliza para una mayor optimización. Aunque la diferencia suele ser insignificante debido a las herramientas de los sistemas, [a] conceptualmente el almacén de documentos está diseñado para ofrecer una experiencia más rica con las técnicas de programación modernas.

Las bases de datos de documentos [b] contrastan fuertemente con las bases de datos relacionales tradicionales (RDB). Las bases de datos relacionales generalmente almacenan datos en tablas separadas que son definidas por el programador, y un solo objeto puede estar distribuido en varias tablas. Las bases de datos de documentos almacenan toda la información de un objeto determinado en una sola instancia en la base de datos, y cada objeto almacenado puede ser diferente de todos los demás. Esto elimina la necesidad de mapeo relacional de objetos mientras se cargan datos en la base de datos.

Documentos

El concepto central de una base de datos orientada a documentos es la noción de documento . Si bien cada implementación de base de datos orientada a documentos difiere en los detalles de esta definición, en general, todas asumen que los documentos encapsulan y codifican datos (o información) en algún formato o codificación estándar. Las codificaciones en uso incluyen XML , YAML , JSON , así como formatos binarios como BSON .

Los documentos de un almacén de documentos son aproximadamente equivalentes al concepto de programación de un objeto. No es necesario que sigan un esquema estándar ni tendrán todas las mismas secciones, ranuras, partes o claves. Por lo general, los programas que utilizan objetos tienen muchos tipos diferentes de objetos y esos objetos suelen tener muchos campos opcionales. Cada objeto, incluso los de la misma clase, puede tener un aspecto muy diferente. Los almacenes de documentos son similares en el sentido de que permiten diferentes tipos de documentos en un solo almacén, permiten que los campos dentro de ellos sean opcionales y, a menudo, permiten que se codifiquen utilizando diferentes sistemas de codificación. Por ejemplo, el siguiente es un documento, codificado en JSON:

{ "nombre" : "Bob" ,   "apellido" : "Smith" ,  "DIRECCIÓN" : {  "tipo" : "Inicio" ,  "calle1" : "Calle Oak 5" , "ciudad" : "chicos" ,  "estado" : "AR" ,  "código postal" : "32225" ,  "país" : "EE.UU."  }, "hobby" : "navegar" ,  "teléfono" : {  "tipo" : "Celda" ,  "número" : "(555)-123-4567"  }}

Un segundo documento podría codificarse en XML como:

<contacto> <nombre> Bob </nombre> <apellido> Smith </apellido> <teléfono tipo= "Celular" > (123) 555-0178 </teléfono> <teléfono tipo= "Trabajo" > (890) 555-0133 </teléfono> <dirección> <tipo> Casa </tipo> <calle1> 123 Back St. </calle1> <ciudad> Boys </ciudad> <estado> AR </estado> <código postal > 32225 </código postal> <país > EE. UU. < / país> </dirección> </contacto>                  

Estos dos documentos comparten algunos elementos estructurales entre sí, pero cada uno también tiene elementos únicos. La estructura, el texto y otros datos dentro del documento generalmente se denominan contenido del documento y se puede hacer referencia a ellos mediante métodos de recuperación o edición (consulte a continuación). A diferencia de una base de datos relacional, donde cada registro contiene los mismos campos, lo que deja vacíos los campos no utilizados; no hay "campos" vacíos en ninguno de los documentos (registros) del ejemplo anterior. Este enfoque permite agregar nueva información a algunos registros sin necesidad de que todos los demás registros de la base de datos compartan la misma estructura.

Las bases de datos de documentos suelen incluir metadatos adicionales que se asocian con el contenido del documento y se almacenan junto con él. Esos metadatos pueden estar relacionados con las funciones que ofrece el almacén de datos para organizar documentos, brindar seguridad u otras funciones específicas de la implementación.

Operaciones CRUD

Las operaciones principales que una base de datos orientada a documentos admite son similares a las de otras bases de datos y, si bien la terminología no está perfectamente estandarizada, la mayoría de los profesionales las reconocerán como CRUD :

Llaves

Los documentos se direccionan en la base de datos a través de una clave única que representa ese documento. Esta clave es un identificador simple (o ID), normalmente una cadena , un URI o una ruta . La clave se puede utilizar para recuperar el documento de la base de datos. Normalmente, la base de datos conserva un índice en la clave para acelerar la recuperación del documento y, en algunos casos, la clave es necesaria para crear o insertar el documento en la base de datos.

Recuperación

Otra característica definitoria de una base de datos orientada a documentos es que, más allá de la simple búsqueda de claves en documentos que se puede utilizar para recuperar un documento, la base de datos ofrece una API o lenguaje de consulta que permite al usuario recuperar documentos en función del contenido (o metadatos). Por ejemplo, es posible que desee una consulta que recupere todos los documentos con un determinado campo establecido en un valor determinado. El conjunto de API de consulta o las características del lenguaje de consulta disponibles, así como el rendimiento esperado de las consultas, varía significativamente de una implementación a otra. Asimismo, el conjunto específico de opciones de indexación y configuración que están disponibles varían en gran medida según la implementación.

Aquí es donde el almacén de documentos se diferencia más del almacén de clave-valor. En teoría, los valores de un almacén de clave-valor son opacos para el almacén, son esencialmente cajas negras. Pueden ofrecer sistemas de búsqueda similares a los de un almacén de documentos, pero pueden tener menos conocimiento sobre la organización del contenido. Los almacenes de documentos utilizan los metadatos del documento para clasificar el contenido, lo que les permite, por ejemplo, entender que una serie de dígitos es un número de teléfono y otra es un código postal. Esto les permite buscar esos tipos de datos, por ejemplo, todos los números de teléfono que contienen 555, lo que ignoraría el código postal 55555.

Edición

Las bases de datos de documentos generalmente proporcionan algún mecanismo para actualizar o editar el contenido (o metadatos) de un documento, ya sea permitiendo el reemplazo de todo el documento o de partes estructurales individuales del documento.

Organización

Las implementaciones de bases de datos de documentos ofrecen una variedad de formas de organizar documentos, incluidas nociones de

A veces, estas nociones organizativas varían en cuanto a su naturaleza lógica o física (por ejemplo, en disco o en memoria).

Relación con otras bases de datos

Relación con los almacenes de clave-valor

Una base de datos orientada a documentos es un almacén de clave-valor especializado , que en sí mismo es otra categoría de base de datos NoSQL. En un almacén de clave-valor simple, el contenido del documento es opaco. Una base de datos orientada a documentos proporciona API o un lenguaje de consulta/actualización que expone la capacidad de consultar o actualizar en función de la estructura interna del documento . Esta diferencia puede ser menor para los usuarios que no necesitan API de consulta, recuperación o edición más completas que suelen proporcionar las bases de datos de documentos. Los almacenes de clave-valor modernos a menudo incluyen funciones para trabajar con metadatos, lo que difumina las líneas entre los almacenes de documentos.

Relación con los motores de búsqueda

Algunos sistemas de motores de búsqueda (también conocidos como sistemas de recuperación de información ) como Apache Solr y Elasticsearch proporcionan suficientes operaciones básicas sobre documentos para ajustarse a la definición de una base de datos orientada a documentos.

Relación con bases de datos relacionales

En una base de datos relacional, los datos se clasifican primero en una serie de tipos predefinidos y se crean tablas para contener entradas individuales, o registros , de cada tipo. Las tablas definen los datos dentro de los campos de cada registro , lo que significa que cada registro de la tabla tiene la misma forma general. El administrador también define las relaciones entre las tablas y selecciona ciertos campos que cree que se utilizarán con más frecuencia para realizar búsquedas y define índices sobre ellos. Un concepto clave en el diseño relacional es que cualquier dato que pueda repetirse normalmente se coloca en su propia tabla y, si estas instancias están relacionadas entre sí, se selecciona una columna para agruparlas, la clave externa . Este diseño se conoce como normalización de bases de datos . [3]

Por ejemplo, una aplicación de libreta de direcciones generalmente necesitará almacenar el nombre del contacto, una imagen opcional, uno o más números de teléfono, una o más direcciones de correo postal y una o más direcciones de correo electrónico. En una base de datos relacional canónica, se crearían tablas para cada una de estas filas con campos predefinidos para cada bit de datos: la tabla CONTACTO podría incluir las columnas NOMBRE, APELLIDO e IMAGEN, mientras que la tabla NÚMERO DE TELÉFONO podría incluir CÓDIGO DE PAÍS, CÓDIGO DE ÁREA, NÚMERO DE TELÉFONO y TIPO (casa, trabajo, etc.). La tabla NÚMERO DE TELÉFONO también contiene una columna de clave externa, "CONTACT_ID", que contiene el número de identificación único asignado al contacto cuando se creó. Para recrear el contacto original, el motor de la base de datos utiliza las claves externas para buscar los elementos relacionados en el grupo de tablas y reconstruir los datos originales.

Por el contrario, en una base de datos orientada a documentos puede que no exista una estructura interna que se corresponda directamente con el concepto de una tabla, y los campos y las relaciones generalmente no existen como conceptos predefinidos. En cambio, todos los datos de un objeto se colocan en un solo documento y se almacenan en la base de datos como una sola entrada. En el ejemplo de la libreta de direcciones, el documento contendría el nombre del contacto, la imagen y cualquier información de contacto, todo en un solo registro. Se accede a esa entrada a través de su clave, que permite a la base de datos recuperar y devolver el documento a la aplicación. No se necesita ningún trabajo adicional para recuperar los datos relacionados; todo esto se devuelve en un solo objeto.

Una diferencia clave entre los modelos orientados a documentos y los relacionales es que los formatos de datos no están predefinidos en el caso de los documentos. En la mayoría de los casos, cualquier tipo de documento se puede almacenar en cualquier base de datos, y esos documentos pueden cambiar de tipo y forma en cualquier momento. Si se desea agregar un COUNTRY_FLAG a un CONTACT, este campo se puede agregar a los documentos nuevos a medida que se insertan, esto no tendrá ningún efecto en la base de datos o en los documentos existentes ya almacenados. Para facilitar la recuperación de información de la base de datos, los sistemas orientados a documentos generalmente permiten al administrador proporcionar sugerencias a la base de datos para buscar ciertos tipos de información. Estos funcionan de manera similar a los índices en el caso relacional. La mayoría también ofrece la capacidad de agregar metadatos adicionales fuera del contenido del documento en sí, por ejemplo, etiquetar las entradas como parte de una libreta de direcciones, lo que permite al programador recuperar tipos de información relacionados, como "todas las entradas de la libreta de direcciones". Esto proporciona una funcionalidad similar a una tabla, pero separa el concepto (categorías de datos) de su implementación física (tablas).

En el modelo relacional normalizado clásico, los objetos de la base de datos se representan como filas de datos independientes sin ninguna estructura inherente más allá de la que se les proporciona a medida que se recuperan. Esto genera problemas al intentar traducir objetos de programación hacia y desde sus filas de base de datos asociadas, un problema conocido como desajuste de impedancia relacional de objetos . [4] Los almacenes de documentos asignan objetos de programación al almacén de manera más precisa o, en algunos casos, directamente. A menudo, se comercializan con el término NoSQL .

Implementaciones

Implementaciones de bases de datos XML

La mayoría de las bases de datos XML son bases de datos orientadas a documentos.

Véase también

Notas

  1. ^ Hasta el punto de que los sistemas orientados a documentos y los sistemas clave-valor a menudo pueden intercambiarse en la operación.
  2. ^ Y almacenes de clave-valor en general.

Referencias

  1. ^ Drake, Mark (9 de agosto de 2019). "Una comparación de los sistemas y modelos de gestión de bases de datos NoSQL". DigitalOcean . Archivado desde el original el 13 de agosto de 2019 . Consultado el 23 de agosto de 2019 . Las bases de datos orientadas a documentos, o almacenes de documentos, son bases de datos NoSQL que almacenan datos en forma de documentos. Los almacenes de documentos son un tipo de almacén de clave-valor: cada documento tiene un identificador único (su clave) y el documento en sí mismo sirve como valor.
  2. ^ "Clasificación de DB-Engines por categoría de modelo de base de datos".
  3. ^ "Descripción de los conceptos básicos de normalización de bases de datos". Microsoft . 14 de julio de 2023.
  4. ^ Wambler, Scott (22 de marzo de 2023). "El desajuste de impedancia relacional de objetos". Agile Data .
  5. ^ "Documentación | Aerospike - Almacén de claves y valores". docs.aerospike.com . Consultado el 3 de mayo de 2021 .
  6. ^ "Documentación | Aerospike". docs.aerospike.com . Consultado el 3 de mayo de 2021 .
  7. ^ "Protocolo HTTP para AllegroGraph".
  8. ^ "Base de datos NoSQL multimodelo de alta disponibilidad". ArangoDB .
  9. ^ Documentación archivada el 20 de agosto de 2012 en Wayback Machine . Couchbase. Consultado el 18 de septiembre de 2013.
  10. ^ "Apache CouchDB". Apache Couchdb . Archivado desde el original el 20 de octubre de 2011.
  11. ^ "HTTP_Document_API - Wiki de Couchdb". Archivado desde el original el 1 de marzo de 2013. Consultado el 14 de octubre de 2011 .
  12. ^ "Crate SQL HTTP Endpoint (copia archivada)". Archivado desde el original el 22 de junio de 2015. Consultado el 22 de junio de 2015 .
  13. ^ Base de datos XML nativa de código abierto eXist-db. Exist-db.org. Recuperado el 18 de septiembre de 2013.
  14. ^ "Comparación de las ediciones de Informix versión 12". IBM . 22 de julio de 2016.
  15. ^ "Licencia de MarkLogic". Archivado desde el original el 12 de enero de 2012. Consultado el 28 de diciembre de 2011 .
  16. ^ "Licencias de MongoDB".
  17. ^ "El nuevo controlador Rust de MongoDB". MongoDB . Consultado el 1 de febrero de 2018 .
  18. ^ "Referencia de controladores compatibles con la comunidad".
  19. ^ "Interfaz HTTP: ecosistema MongoDB". Documentación de MongoDB .
  20. ^ "Documentación del ecosistema MongoDB". GitHub . 27 de junio de 2019.
  21. ^ "GT.M Motor de base de datos TP de alta gama". 26 de septiembre de 2023.
  22. ^ "RedisJSON: un tipo de datos JSON para Redis".
  23. ^ "Transferencia de derechos de autor a The Linux Foundation, reestructuración de la licencia de RethinkDB bajo ASLv2". github.com . Consultado el 27 de enero de 2020 .
  24. ^ "solr/LICENSE.txt en main · apache/solr · GitHub". github.com . Consultado el 24 de diciembre de 2022 .
  25. ^ "Response Writers :: Apache Solr Reference Guide" (Guía de referencia de Apache Solr para escritores de respuestas). solr.apache.org . Consultado el 24 de diciembre de 2022 .
  26. ^ "Recursos administrados:: Guía de referencia de Apache Solr". solr.apache.org . Consultado el 24 de diciembre de 2022 .
  27. ^ "TerminusDB y base de datos gráfica orientada a documentos en memoria y de código abierto". terminusdb.com . Consultado el 9 de agosto de 2023 .

Lectura adicional


Enlaces externos