Evokoa/pgGraph
Open-source graph database superpowers for your existing Postgres data.
解決する課題
PostgreSQLのようなリレーショナルデータベースは構造化データの扱いに長けていますが、2つのエンティティ間の最短経路を見つける、あるいは特定のホップ数以内のレコードを探索するといった、複雑なグラフ形式のクエリには苦戦します。従来、これらのクエリには複雑でカスタムな再帰SQLが必要であり、処理速度の低下やメンテナンスの難化を招くことがありました。
仕組み
データを別のグラフデータベースに移動させる代わりに、pgGraphは既存のPostgreSQLテーブルから派生した、読み取り重視の特化型グラフインデックスを構築します。Compressed Sparse Row (CSR) 形式を使用して、連続したメモリ構造内にリレーションシップを保存するため、極めて高速なトラバーサルが可能です。PostgreSQLをデータの信頼できる唯一の情報源(source of truth)として維持したまま、graph スキーマ内の標準的なSQL関数を使用してこのグラフを操作できます。
対象ユーザー
- 専用のグラフデータベースへ移行することなく、複雑なリレーションシップクエリを実行する必要があるPostgreSQLユーザー。
- GraphRAGのようなグラフベースのワークロードを加速させたいデータエンジニア。
- すべてのデータを既存のリレーショナルスキーマとセキュリティ制約内に保持したまま、高速なトラバーサル(最短経路やマルチホップ検索など)を実行したいユーザー。
特徴
- データ移行ゼロ: データは標準的なPostgreSQLテーブルに保持されます。pgGraphは派生インデックスを作成するだけです。
- 高いパフォーマンス: 特化したメモリ効率の高い実行レイヤーを使用し、再帰的なSQL結合のオーバーヘッドを回避します。
- SQLネイティブ: 新しいクエリ言語は不要です。SQL関数を使用してグラフ検索を実行できます。
- 安全性: 深度制限やメモリ保護などの組み込みのサーキットブレーカーを備えており、無制限なトラバーサルによるデータベースのクラッシュを防ぎます。