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関数を使用してグラフ検索を実行できます。
  • 安全性: 深度制限やメモリ保護などの組み込みのサーキットブレーカーを備えており、無制限なトラバーサルによるデータベースのクラッシュを防ぎます。