En el mundo actual, Base de datos documental se ha convertido en un tema de interés para una gran variedad de personas. Con el paso del tiempo, Base de datos documental ha ido ganando relevancia en diferentes ámbitos, ya sea en el ámbito personal, académico, profesional, político o cultural. La importancia de Base de datos documental no se limita a una sola área, sino que su impacto se extiende a múltiples aspectos de la vida cotidiana. En este artículo, exploraremos las diferentes facetas de Base de datos documental y su influencia en la sociedad actual, analizando tanto sus aspectos positivos como sus desafíos. A través de un enfoque multidisciplinario, buscamos profundizar en la comprensión de Base de datos documental y su significado en el mundo contemporáneo.
Una base de datos documental está constituida por un conjunto de programas que almacenan, recuperan y gestionan datos de documentos o datos de algún modo estructurados. Este tipo de bases de datos constituyen una de las principales subcategorías dentro de las denominadas bases de datos NoSQL. A diferencia de las bases de datos relacionales, estas bases de datos están diseñadas alrededor de una noción abstracta de "Documento".
El concepto central de una base de datos orientada a documentos es el concepto mismo de Documento. Mientras cada implementación de base de datos orientada a documentos difiere en los detalles, en general todas ellas comparten el principio de que los documentos encapsulan y codifican datos o información siguiendo algún formato estándar. Entre las codificaciones usadas en la actualidad se encuentran XML, YAML y JSON, así como formatos binarios como BSON.
Los documentos dentro de una base de datos orientada a documentos son similar, de algún modo, a registros, tuplas o filas en una base de datos relacional pero menos rígidos. No se les requiere ajustarse a un esquema estándar ni tener todos las mismas secciones, atributos, claves o cosas por el estilo. Por ejemplo un documento puede ser:
{ Nombre:Miguel Ignacio Barboteo Piñero Dirección:Málaga Profesión:"Bancario" }
Mientras que otro:
{ Nombre:Miguel Ignacio Barboteo Piñero Dirección:Málaga Hijos:[ {Nombre:"Iñaki"}, {Nombre:"Nando"}, {Nombre:"Maria"}, Esposa:[ {Nombre:"Maria Begoña"},
Estos documentos contienen alguna información similar y otra diferente. Al contrario que una base de datos relacional en la que todos los registros deben tener los mismos atributos -que pueden quedar vacíos- , en un documento no quedan 'campos' vacíos. De este modo es posible añadir nueva información sin necesidad de establecer qué información queda excluida.
Se direccionan los documentos mediante una clave única que identifica el documento. Generalmente esta clave se compone de una simple cadena. En algunos casos puede tratarse de un URI o un camino, que sirve para rescatar el documento de la base de datos. Generalmente la base de datos mantiene un índice de dichas claves, por lo que la recuperación es rápida.
Otra de las características que definen una base de datos orientada a documentos es que, más allá de la sencilla correspondencia clave-documento (o clave-valor) usada para recuperar un documento, la base de datos ofrece un API o un lenguaje de interrogación para recuperar documentos según su contenido. Por ejemplo, para preguntar por todos los documentos que tienen un valor dado en un campo. El conjunto de características del API o del lenguaje de interrogación, así como lo que se obtiene, varía significativamente entre distintas implementaciones.
Las distintas implementaciones de bases de datos documentales que podemos organizan los documentos de muy distintas formas, entre las que se encuentran:
Nombre | Editor | Licencia | Lenguaje | Notas | API RESTful |
---|---|---|---|---|---|
BaseX | BaseX Team | BSD | Java, XQuery | Soporta XML, JSON y formatos binarios; arquitectura cliente-servidor; búsquedas de texto completo concurrentes. | Sí |
ArangoDB | triAGENS | Apache 2 | C, C++ & Javascript | Almacén de documentos y presentación gráfica. | Sí |
Clusterpoint | Clusterpoint Ltd. | Libre/Comercial | C++ | Base de datos documental sin esquema, búsqueda de texto completo, ordenación por relevancia y funcionamiento en Cluster. | Sí |
Couchbase Server | Couchbase, Inc. | Apache | Erlang y C | Base de datos NoSQL distribuida documental. | Sí |
CouchDB | Apache Software Foundation | Apache | Erlang | JSON sobre REST/HTTP con propiedades ACID mediante multiversion concurrency control limitadas. Usa map y reduce para las vistas e interrogaciones. | Sí |
eXist | eXist, | GPL | XQuery, Java | XML sobre REST/HTTP, WebDAV, búsqueda de texto completo con Lucene, validación, versionado, clustering, triggers, reescritura de URLs, colecciones, ACLs, XQuery Update | Sí |
FleetDB | FleetDB | MIT | Clojure | Una base de datos basada en JSON sin esquema, optimizada para desarrollo Agile. | (desconocido) |
Jackrabbit | Apache Software Foundation | Apache | Java | (desconocido) | |
Lotus Notes | IBM | Proprietaria | LotusScript, Java, Lotus @Formula | (desconocido) | |
MarkLogic | MarkLogic Corporation | Libre o comercial | REST, Java, XQuery, XSLT, C++ | Base de datos documental distribuida con multiversion concurrency control, búsqueda de texto completo y transacciones ACID. | Sí |
MongoDB | MongoDB, Inc | GNU AGPL v3.0 | C++ | Base de datos documental optimizada para contenido muy transitorio | Opcional |
MUMPS | Proprietaria y GNU Affero GPL | MUMPS | Muy usada en aplicaciones médicas. | (desconocido) | |
OrientDB | Orient Technologies Archivado el 20 de abril de 2012 en Wayback Machine. | Apache | Java | JSON sobre HTTP | Sí |
Redis | BSD License | ANSI C | Almacén clave-valor con soporte de listas y conjuntos | (desconocido) | |
Rocket U2 | Rocket Software | Proprietaria | UniData, UniVerse | Sí (Beta) | |
RavenDB | Hibernating Rhinos | GNU AGPL v3.0 o Commercial | C# | JSON sobre HTTP | Sí |
Knosys | Micronet, S.A. | Propietaria | C++, Java, C# | Base de datos documental con control de flujos de trabajo | Si |
La mayoría de las bases de datos XML están orientadas a documentos.