Bases de Datos Documental

Base de datos orientada a documentos

Una base de datos documental, también llamada una base de datos orientada a documentos u tienda de documentos, es un subconjunto de un tipo de base de datos NoSQL.

Algunos almacenes de documentos también pueden ser bases de datos de valores clave. Una base de datos de documentos se utiliza para almacenar, recuperar y administrar datos semiestructurados.

A diferencia de las bases de datos relacionales tradicionales, el modelo de datos en una base de datos de documentos no está estructurado en un formato de tabla de filas y columnas.

El esquema puede variar, proporcionando mucha más flexibilidad para el modelado de datos que las bases de datos relacionales.

Las bases de datos documental almacena cada registro y sus datos asociados en un solo documento. Cada documento contiene datos semiestructurados que pueden ser consultados con el uso de varias herramientas de consulta y análisis del DBMS.

Mongo

MongoDB es un referente en este tipo de base de datos

Funcionamiento

Una base de datos de documentos utiliza documentos como la estructura para almacenamiento y consultas. En este caso, el término "documento" puede referirse a un documento de texto, pero comúnmente es un archivo de XML o JSON. En lugar de columnas con nombres y tipos de datos que se utilizan en una base de datos relacional, un documento contiene una descripción del tipo de datos y el valor de esa descripción.

Ejemplos

Ejemplo en XML:

 <artist>
   <artistname>Iron Maiden</<artistname>
   <albums>
     <album>
       <albumname>The Book of Souls</albumname>
       <datereleased>2015</datereleased>
       <genre>Hard Rock</genre>
     </album>
     <album>
       <albumname>Killers</albumname>
       <datereleased>1981</datereleased>
       <genre>Hard Rock</genre>
     </album>
     <album>
       <albumname>Powerslave</albumname>
       <datereleased>1984</datereleased>
       <genre>Hard Rock</genre>
     </album>
     <album>
       <albumname>Somewhere in Time</albumname>
       <datereleased>1986</datereleased>
       <genre>Hard Rock</genre>
     </album>
   </albums>
 </artist>

Ejemplo en JSON:

{
    '_id' : 1,
    'artistName' : { 'Iron Maiden' },
    'albums' : [
        {
            'albumname' : 'The Book of Souls',
            'datereleased' : 2015,
            'genre' : 'Hard Rock'
        }, {
            'albumname' : 'Killers',
            'datereleased' : 1981,
            'genre' : 'Hard Rock'
        }, {
            'albumname' : 'Powerslave',
            'datereleased' : 1984,
            'genre' : 'Hard Rock'
        }, {
            'albumname' : 'Somewhere in Time',
            'datereleased' : 1986,
            'genre' : 'Hard Rock'
        }
    ]
}

Cada documento puede tener la misma o diferente estructura.

Para agregar tipos adicionales de datos a una base de datos de documentos, no hay necesidad de modificar el esquema completo de la base de datos como lo hay con una base de datos relacional. Los datos pueden simplemente agregarse agregando objetos a la base de datos.

Los documentos se agrupan en "colecciones", que tienen un propósito similar a una tabla relacional. Una base de datos de documentos proporciona un mecanismo de consulta para buscar colecciones de documentos con atributos particulares.

Beneficios

Las tiendas de documentos ofrecen importantes ventajas cuando se requieren características específicas, que incluyen:

Modelado flexible de datos: a medida que las aplicaciones web, móviles, sociales e IoT cambian la naturaleza de los modelos de datos de aplicaciones, las bases de datos de documentos eliminan la necesidad de forzar modelos de datos relacionales para admitir nuevos tipos de modelos de datos de aplicaciones.

Rendimiento de escritura rápido: a diferencia de las bases de datos relacionales tradicionales, algunas bases de datos de documentos priorizan la disponibilidad de escritura sobre la estricta consistencia de los datos. Esto garantiza que las escrituras siempre serán rápidas, incluso si una falla en una parte del hardware o de la red da como resultado un pequeño retraso en la replicación de datos y la coherencia en todo el entorno.

Rendimiento rápido de consultas: muchas bases de datos de documentos tienen potentes motores de búsqueda y funciones de indexación que proporcionan capacidades de consulta rápidas y eficientes.

 

El surgimiento de la computación en la nube ha reducido drásticamente los costos de implementación y almacenamiento, pero solo si los datos se pueden distribuir fácilmente entre varios servidores sin interrupciones. En una base de datos SQL compleja, esto es difícil porque muchas consultas requieren que varias tablas grandes se unan para proporcionar una respuesta.

Ejecutar uniones distribuidas es un problema muy complejo en las bases de datos relacionales.

La necesidad de almacenar datos no estructurados, como publicaciones en redes sociales y multimedia, ha crecido rápidamente.

Las bases de datos SQL son extremadamente eficientes en el almacenamiento de información estructurada, y se necesitan soluciones temporales o compromisos para almacenar y consultar datos no estructurados.

Los métodos de desarrollo ágiles significan que el esquema de la base de datos necesita cambiar rápidamente a medida que evolucionan las demandas.

Las bases de datos de SQL requieren que su estructura se especifique de antemano, lo que significa que cualquier cambio en el esquema de información requiere de consultas ALTER que consumen tiempo para ejecutarse en una tabla.

Los datos no estructurados se pueden almacenar fácilmente, ya que un documento contiene las claves y valores que la lógica de la aplicación requiere.

Además, se evitan las migraciones costosas ya que la base de datos no necesita conocer su esquema de información de antemano.

Las bases de datos de documentos generalmente tienen motores de búsqueda y características de indexación muy potentes que facilitan y aceleran la ejecución de diferentes consultas optimizadas.

La fuerza del lenguaje de consulta de una base de datos documental es un diferenciador importante entre estas bases de datos.

Opciones

MongoDB

DynamoDB

Couchbase

Azure CosmosDB


Sección NoSQL: