Evokoa/pgGraph

Open-source graph database superpowers for your existing Postgres data.

何を解決するか

pgGraphは、標準的なリレーショナルPostgreSQLテーブル上でグラフ形式のクエリ(最短経路の検索や複数ホップの関係性の探索など)を実行する際のパフォーマンスのボトルネックを解決します。データ量が増えるにつれて複雑な再帰SQLや高コストな結合が遅くなるのではなく、グラフの探索を高速に実行するための最適化された実行層を提供します。

動作方法

PostgreSQL拡張として機能し、既存のテーブルを信頼できるデータソースとして扱いながら、高度に最適化されたグラフインデックスを派生的に構築します。

  • CSR隣接: リレーショナルデータを圧縮疎行列(CSR)形式のエッジストアにコンパイルし、O(1)の隣接ノード検索とメモリスキャンを可能にします。SQLベースの関係性発見ではなく、直接メモリアクセスが行えます。
  • 派生状態: グラフはテーブルから派生した読み取り専用のアーティファクトです。PostgreSQLはストレージ、WAL、耐久性を引き続き管理し、pgGraphは探索ロジックを担当します。
  • 安全機構: 無制限の拡張によるデータベースクラッシュを防ぐために、深さ制限、フロンティア制限、メモリ保護などの回路ブレーカーを実装しています。
  • SQL統合: グラフとのやり取りはgraphスキーマ内のSQL関数(例:graph.search()graph.shortest_path())を通じて行い、Cypherのような新しいクエリ言語を学ぶ必要がありません。

対象ユーザー

既にPostgreSQLを使用している開発者やデータベース管理者で、専用のグラフデータベースにデータを移行せずに、高パフォーマンスなグラフ検索や関係性分析を実行したい方を対象としています。

特徴

  • データ移行不要: 新しいスキーマやストレージシステムを必要とせず、既存のPostgreSQLテーブル上で直接動作します。
  • 高パフォーマンス: 再帰SQLのオーバーヘッドを回避するため、CSRメモリ構造を使用しています。
  • 標準SQLインターフェース: 専用のグラフクエリ言語ではなく、標準SQL関数を通じてアクセス可能です。
  • リソース保護: 訪問済みノードの追跡やOOM保護などの組み込み保護機構により、データベースの安定性を確保します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト