このプロジェクトについて

HydraDBはRustで実装されたオブジェクトストアネイティブの分散グラフデータベースです。S3互換オブジェクトストレージ上に永続的なグラフストレージを提供し、スナップショット整合性のあるOpenCypherクエリ、GraphBLASトラバーサル、Neo4j互換のBolt接続、HTTPSクエリAPIを備えるように設計されています。 アーキテクチャは完全に分離されたストレージとコンピュートを特徴とします。データノード(graph-node)はクエリと正規のミューテーションを処理し、インデクサー(graph-indexer)はバックグラウンドで不変のトラバーサルインデックスを構築します。どちらの役割もメモリとローカルSSDまたはNVMe上に使い捨ての状態のみを保持し、グラフを移動せずにスケーリングできるようにします。永続的な信頼できる情報源はS3互換オブジェクトストレージに存在し、グラフレコード、WAL、マニフェスト、不変のトラバーサルインデックスを保持します。 主な機能は次のとおりです。 - すべての永続データに対するS3互換ストレージによるオブジェクトストアの耐久性。 - データノードとインデクサーの独立したスケーリング。 - オブジェクトストアのCASリースとSlateDBライターエポックによる安全なライターハンドオフ。 - 固定されたSlateDBスナップショットを使用した一貫性のある読み取り。インデックス付きトラバーサルと可視WALオーバーレイを組み合わせます。 - プロパティインデックス、逆隣接、スパーストラバーサル、SuiteSparse GraphBLASを活用したグラフネイティブ実行。 - 使い慣れたクライアント:Bolt 5.x上のNeo4jドライバーと、型付きJSON/NDJSON HTTP API。 - 認証、認可、デッドライン、結果制限、バックプレッシャー、キャンセル、キャッシュ予算、メトリクス、トレースによる境界付き運用。 HydraDBは読み取りとミューテーションのための実用的なOpenCypherサブセットをサポートします。型付きリレーションシップ、有界の可変長パス、プロパティとラベルの述語、順序付け、ページネーション、集約、OPTIONAL MATCH、UNION、バッチUNWIND書き込みが含まれます。また、効率的な有界パスクエリのためのネイティブなスナップショットスコープのパスプロシージャ(algo.SPpaths、algo.SSpaths、algo.MSpaths)も提供します。 読み取り一貫性には2つのモードがあります。causal(デフォルト、現在の永続リーダービューを使用)とstrong(スナップショットを固定する前にオブジェクトストレージからSlateDBリーダーを更新)です。HTTPSリクエストはボディで一貫性を設定し、BoltクライアントはRUNまたはトランザクションメタデータで設定します。 はじめ方のオプションには、Dockerイメージ(ghcr.io/hydra-db/hydradb)の実行、またはRust 1.91+、C/C++ツールチェーン、libcypher-parser、SuiteSparse GraphBLASを用いたソースからのビルドが含まれます。リポジトリはコマンド実行に`just`を使用します。検証手順にはスモークテストとランタイムスモークスクリプトが含まれます。 本番環境では、Kubernetesデプロイ用のHelmチャートが利用可能で、クエリノード、インデクサーワーカー、サービス、キャッシュボリューム、ネットワークポリシー、ディスラプションバジェット、TLS、認証、オプションのPrometheus統合を構成します。 可観測性機能には、HTTPヘルスエンドポイント、レディネスとメトリクスのエンドポイント、構造化トレースフィールド、OpenTelemetryサポートが含まれます。Prometheusの期間ヒストグラムには特定の単位が文書化されています。 このプロジェクトはAGPL-3.0の下でライセンスされており、ベンチマーク、アーキテクチャドキュメント、正確性ケースブック、形式検証の証拠、Jepsen一貫性レポートが含まれます。