ArangoDB: una primera base de datos multimodelo

ArangoDB es aclamado por sus desarrolladores como una base de datos nativa de múltiples modelos. Esto es diferente a otras bases de datos NoSQL. En esta base de datos, los datos se pueden almacenar como documentos, pares clave / valor o gráficos. Y con un solo lenguaje de consulta declarativo, se puede acceder a todos o cualquiera de sus datos. Además, se pueden combinar diferentes modelos en una sola consulta. Y, debido a su estilo multimodelo, se pueden realizar aplicaciones ajustadas, que serán escalables horizontalmente con cualquiera o todos los tres modelos de datos.

Bases de datos multimodelo nativas o en capas

En esta sección, destacaremos una diferencia crucial entre las bases de datos nativas y multimodelo en capas.

Muchos proveedores de bases de datos llaman a su producto “multimodelo”, pero agregar una capa gráfica a una clave / valor o almacén de documentos no califica como multimodelo nativo.

Con ArangoDB, el mismo núcleo con el mismo lenguaje de consulta, se pueden agrupar diferentes modelos de datos y características en una sola consulta, como ya hemos dicho en la sección anterior. En ArangoDB, no hay "cambio" entre modelos de datos, y no hay cambio de datos de A a B para ejecutar consultas. Conduce a ventajas de rendimiento para ArangoDB en comparación con los enfoques "en capas".

La necesidad de una base de datos multimodal

La interpretación de la idea básica [de Fowler] nos lleva a darnos cuenta de los beneficios de utilizar una variedad de modelos de datos apropiados para diferentes partes de la capa de persistencia, siendo la capa parte de la arquitectura de software más grande.

De acuerdo con esto, uno podría, por ejemplo, usar una base de datos relacional para conservar datos tabulares estructurados; un almacén de documentos para datos no estructurados, similares a objetos; un almacén de clave / valor para una tabla hash; y una base de datos de gráficos para datos referenciales altamente vinculados.

Sin embargo, la implementación tradicional de este enfoque llevará a uno a utilizar varias bases de datos en el mismo proyecto. Puede provocar cierta fricción operativa (implementación más complicada, actualizaciones más frecuentes), así como problemas de duplicación y coherencia de datos.

El siguiente desafío después de unificar los datos para los tres modelos de datos es diseñar e implementar un lenguaje de consulta común que pueda permitir a los administradores de datos expresar una variedad de consultas, como consultas de documentos, búsquedas de clave / valor, consultas gráficas y combinaciones arbitrarias. de estos.

Por graphy queries, nos referimos a consultas que involucran consideraciones de teoría de grafos. En particular, estos pueden involucrar las características de conectividad particulares provenientes de los bordes. Por ejemplo,ShortestPath, GraphTraversaly Neighbors.

Los gráficos son un ajuste perfecto como modelo de datos para relaciones. En muchos casos del mundo real, como una red social, un sistema de recomendación o un sistema, etc., un modelo de datos muy natural es un gráfico. Captura relaciones y puede contener información de etiqueta con cada borde y con cada vértice. Además, los documentos JSON son un ajuste natural para almacenar este tipo de datos de vértice y borde.

ArangoDB ─ Funciones

Hay varias características notables de ArangoDB. Destacaremos las características destacadas a continuación:

  • Paradigma multimodelo
  • Propiedades ACID
  • API HTTP

ArangoDB admite todos los modelos de bases de datos populares. A continuación se muestran algunos modelos compatibles con ArangoDB:

  • Modelo de documento
  • Modelo clave / valor
  • Modelo gráfico

Un solo lenguaje de consulta es suficiente para recuperar datos de la base de datos

Las cuatro propiedades Atomicity, Consistency, Isolationy Durability(ACID) describen las garantías de las transacciones de bases de datos. ArangoDB admite transacciones compatibles con ACID.

ArangoDB permite a los clientes, como los navegadores, interactuar con la base de datos con la API HTTP, la API está orientada a los recursos y se puede ampliar con JavaScript.