lanzamiento de una base de datos de múltiples propósitos , que proporciona modelos flexibles para almacenar documentos, grafos y datos en formato clave-valor. La base de datos se maneja a través de un lenguaje de consultas similar a SQL o mediante extensiones especiales en JavaScript. Los métodos de almacenamiento de datos cumplen con los requisitos ACID (atomicidad, consistencia, aislamiento, durabilidad), soportan transacciones y ofrecen escalabilidad tanto horizontal como vertical. La gestión de la base de datos se puede realizar a través de una interfaz web o un cliente de consola . El código de ArangoDB está bajo la licencia Apache 2. El proyecto está escrito en C y JavaScript.
Características clave de ArangoDB:
- La posibilidad de operar sin definir un esquema de almacenamiento de datos (Schema-free) — los datos se estructuran en forma de documentos, donde los metadatos y la información sobre la estructura se separan de los datos del usuario;
- Soporte para usar ArangoDB como servidor para aplicaciones web en JavaScript con acceso a la base de datos a través de REST/Web API;
- Uso de JavaScript para aplicaciones de navegador que acceden a la base de datos y para controladores ejecutados en el lado de la base de datos;
- Arquitectura multihilo que distribuye la carga entre todos los núcleos de la CPU;
- Modelo flexible de almacenamiento de datos, donde se pueden combinar pares clave-valor, documentos y parámetros que definen relaciones entre registros (se ofrecen herramientas para recorrer los vértices del grafo);
- Diferentes modelos de representación de datos (documentos, grafos y pares clave-valor) se pueden mezclar en una sola consulta, lo que simplifica la agregación de datos heterogéneos;
- Soporte para consultas con combinación (JOIN);
- Posibilidad de elegir el tipo de índice que se ajuste a las tareas a resolver (por ejemplo, se puede usar un índice para búsqueda de texto completo);
- Fiabilidad configurable: la aplicación puede determinar lo que es más importante para ella: mayor fiabilidad o mayor rendimiento;
- Almacenamiento eficiente que aprovecha al máximo las capacidades del hardware moderno (por ejemplo, unidades SSD) y puede utilizar grandes cachés;
- Transacciones: posibilidad de ejecutar consultas para varios documentos o colecciones al mismo tiempo con consistencia y aislamiento de transacciones opcionales;
- Soporte para replicación y sharding: posibilidad de crear configuraciones maestro-esclavo y distribuir conjuntos de datos en diferentes servidores según un criterio específico;
- Para la creación de microservicios se proporciona el marco de trabajo JavaScript , ejecutado dentro del servidor de la base de datos con acceso directo a los datos.
, propuestos en la versión ArangoDB 3.6:
- Se ha optimizado el rendimiento de las subconsultas, así como las operaciones UPDATE y REPLACE;
- Se ha implementado la posibilidad de ejecutar consultas AQL en paralelo, lo que permite reducir el tiempo de recolección de datos distribuidos en diferentes nodos del clúster;
- Se ha implementado la materialización diferida de documentos, lo que permite en ciertas situaciones evitar la necesidad de extraer completamente documentos irrelevantes;
- Al escanear documentos se asegura el rechazo temprano de aquellos que no cumplen con el filtro establecido;
- Se ha mejorado el motor de búsqueda de texto completo ArangoSearch, que soporta la clasificación teniendo en cuenta la similitud de los datos. Se ha añadido soporte para un analizador para autocompletar consultas, se implementaron funciones TOKENS() y PHRASE() para la formación dinámica de consultas de búsqueda;
- Se ha agregado la configuración maxRuntime para limitar selectivamente el tiempo de ejecución de la consulta;
- Se ha añadido la opción ‘—query.optimizer-rules’ para gestionar la activación de ciertas optimizaciones en el procesamiento de consultas;
- Se han ampliado las capacidades para organizar el trabajo del clúster. Se ha añadido la opción ‘—cluster.upgrade’ para seleccionar el modo de actualización de nodos en el clúster;
- Se ha añadido soporte para TLS 1.3 para el cifrado de la comunicación entre el cliente y el servidor (por defecto, el cliente sigue utilizando TLS 1.2).
Fuente: opennet.ru
