À propos du projet
HydraDB est une base de données de graphes distribuée native du stockage objet, implémentée en Rust. Elle est conçue pour fournir un stockage de graphes durable sur un stockage objet compatible S3, avec des requêtes OpenCypher cohérentes par instantané, une traversée GraphBLAS, une connectivité Bolt compatible Neo4j et une API de requête HTTPS.
L'architecture repose sur un stockage et un calcul entièrement dissociés. Les nœuds de données (graph-node) servent les requêtes et les mutations canoniques, tandis que les indexeurs (graph-indexer) construisent en arrière-plan des index de traversée immuables. Les deux rôles ne conservent en mémoire et sur SSD ou NVMe local qu'un état jetable, ce qui permet de monter en charge sans déplacer le graphe. La source de vérité durable réside dans un stockage objet compatible S3, qui contient les enregistrements du graphe, les WAL, les manifestes et les index de traversée immuables.
Les capacités clés incluent :
- Durabilité sur stockage objet avec un stockage compatible S3 pour toutes les données persistantes.
- Mise à l'échelle indépendante des nœuds de données et des indexeurs.
- Transfert sûr du rôle d'écriture via des baux CAS du stockage objet et les époques d'écriture SlateDB.
- Lectures cohérentes à l'aide d'instantanés SlateDB épinglés, avec traversée indexée combinée à une couche WAL visible.
- Exécution native pour les graphes exploitant les index de propriétés, l'adjacence inverse, la traversée creuse et SuiteSparse GraphBLAS.
- Clients familiers : pilotes Neo4j via Bolt 5.x et API HTTP JSON/NDJSON typée.
- Fonctionnement encadré avec authentification, autorisation, échéances, limites de résultats, contre-pression, annulation, budgets de cache, métriques et traces.
HydraDB prend en charge un sous-ensemble pratique d'OpenCypher pour les lectures et les mutations, notamment les relations typées, les chemins de longueur variable bornés, les prédicats de propriété et de label, le tri, la pagination, l'agrégation, OPTIONAL MATCH, UNION et les écritures UNWIND par lots. Il fournit également des procédures de chemin natives à portée d'instantané (algo.SPpaths, algo.SSpaths, algo.MSpaths) pour des requêtes de chemin bornées efficaces.
La cohérence de lecture offre deux modes : causal (par défaut, utilise la vue de lecteur durable actuelle) et fort (rafraîchit le lecteur SlateDB depuis le stockage objet avant d'épingler l'instantané). Les requêtes HTTPS définissent la cohérence dans le corps ; les clients Bolt la définissent dans RUN ou dans les métadonnées de transaction.
Les options de démarrage incluent l'exécution d'une image Docker (ghcr.io/hydra-db/hydradb) ou la compilation depuis les sources avec Rust 1.91+, une chaîne d'outils C/C++, libcypher-parser et SuiteSparse GraphBLAS. Le dépôt utilise `just` pour l'exécution des commandes. Les étapes de vérification incluent des tests de fumée et des scripts de fumée à l'exécution.
Pour la production, un chart Helm est disponible pour un déploiement Kubernetes, configurant les nœuds de requête, les workers d'indexation, les services, les volumes de cache, les politiques réseau, les budgets de perturbation, TLS, l'authentification et une intégration Prometheus optionnelle.
Les fonctionnalités d'observabilité incluent des points de terminaison HTTP de santé, des points de terminaison de disponibilité et de métriques, des champs de traçage structurés et la prise en charge d'OpenTelemetry. Les histogrammes de durée Prometheus ont des unités spécifiques documentées.
Le projet est sous licence AGPL-3.0 et inclut des benchmarks, une documentation d'architecture, des recueils de cas de correction, des preuves de vérification formelle et un rapport de cohérence Jepsen.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.