Sobre el proyecto
HydraDB es una base de datos de grafos distribuida nativa de almacenamiento de objetos implementada en Rust. Está diseñada para proporcionar almacenamiento de grafos duradero en almacenamiento de objetos compatible con S3, con consultas OpenCypher con consistencia de instantáneas, recorrido GraphBLAS, conectividad Bolt compatible con Neo4j y una API de consultas HTTPS.
La arquitectura presenta almacenamiento y cómputo totalmente desagregados. Los nodos de datos (graph-node) atienden consultas y mutaciones canónicas, mientras que los indexadores (graph-indexer) construyen índices de recorrido inmutables en segundo plano. Ambos roles mantienen únicamente estado desechable en memoria y en SSD o NVMe local, lo que permite escalar sin mover el grafo. La fuente de verdad duradera reside en almacenamiento de objetos compatible con S3, que contiene registros del grafo, WALs, manifiestos e índices de recorrido inmutables.
Las capacidades clave incluyen:
- Durabilidad en almacenamiento de objetos con almacenamiento compatible con S3 para todos los datos persistentes.
- Escalado independiente de nodos de datos e indexadores.
- Transferencia segura de escritor mediante concesiones CAS del almacenamiento de objetos y épocas de escritor de SlateDB.
- Lecturas consistentes usando instantáneas fijadas de SlateDB, con recorrido indexado combinado con una superposición WAL visible.
- Ejecución nativa de grafos aprovechando índices de propiedades, adyacencia inversa, recorrido disperso y SuiteSparse GraphBLAS.
- Clientes familiares: controladores Neo4j sobre Bolt 5.x y API HTTP JSON/NDJSON tipada.
- Operación acotada con autenticación, autorización, plazos, límites de resultados, contrapresión, cancelación, presupuestos de caché, métricas y trazas.
HydraDB admite un subconjunto práctico de OpenCypher para lecturas y mutaciones, incluyendo relaciones tipadas, rutas de longitud variable acotadas, predicados de propiedades y etiquetas, ordenación, paginación, agregación, OPTIONAL MATCH, UNION y escrituras UNWIND por lotes. También proporciona procedimientos de rutas nativos con alcance de instantánea (algo.SPpaths, algo.SSpaths, algo.MSpaths) para consultas de rutas acotadas eficientes.
La consistencia de lectura ofrece dos modos: causal (predeterminado, usa la vista de lector duradera actual) y fuerte (actualiza el lector de SlateDB desde el almacenamiento de objetos antes de fijar la instantánea). Las solicitudes HTTPS establecen la consistencia en el cuerpo; los clientes Bolt la establecen en RUN o en los metadatos de la transacción.
Las opciones para empezar incluyen ejecutar una imagen Docker (ghcr.io/hydra-db/hydradb) o compilar desde el código fuente con Rust 1.91+, una cadena de herramientas C/C++, libcypher-parser y SuiteSparse GraphBLAS. El repositorio usa `just` para ejecutar comandos. Los pasos de verificación incluyen pruebas de humo y scripts de humo en tiempo de ejecución.
Para producción, hay disponible un chart de Helm para el despliegue en Kubernetes, que configura nodos de consulta, trabajadores indexadores, servicios, volúmenes de caché, políticas de red, presupuestos de interrupción, TLS, autenticación e integración opcional con Prometheus.
Las características de observabilidad incluyen endpoints HTTP de salud, endpoints de preparación y métricas, campos de trazado estructurados y soporte de OpenTelemetry. Los histogramas de duración de Prometheus tienen unidades específicas documentadas.
El proyecto está licenciado bajo AGPL-3.0 e incluye benchmarks, documentación de arquitectura, libros de casos de corrección, evidencia de verificación formal y un informe de consistencia de Jepsen.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.