InfiniteGraphは、ビッグデータにおける複雑な関係を扱い、ナビゲートするために設計された分散グラフデータベースです。Objectivity社によって開発されました。グラフデータベースはグラフ構造(ノード、エッジ、プロパティ)を使用してデータを表現し保存します。相互接続されたデータや複雑な関係性を扱う場合に特に有効です。
グラフデータベースでは、ノードはエンティティを表し、エッジはエンティティ間の関係を表します。例えば、ソーシャルネットワークアプリケーションでは、各ユーザーはノードとして表現され、他のユーザーとの交友関係はノード間のエッジとして表現されます。
InfiniteGraphは複雑なマルチホップ(中継機を用いた大規模ネットワークを可能にする仕組み)の関係を効率的に保存・検索できることで知られています。水平方向に拡張できるように設計されているため、データのサイズが大きくなってもクラスターにマシンを追加することでパフォーマンスを維持できます。
例で説明しましょう。例えば、ソーシャルネットワークのアプリケーションでデータの保存と分析にInfiniteGraphを使用したいとします。スキーマをどのように定義するか(InfiniteGraphのAPIはJavaをサポートしているため、Javaを使用します)を以下に示します。
このような交友関係のグラフを作成できます。
このようにグラフをナビゲートできます。
これはInfiniteGraphでできることの非常に基本的な例です。InfiniteGraph(そしてグラフデータベース全般)の本当の強みは、従来の表形式データベースモデルにうまく収まらない、複雑で相互接続されたデータを扱うときに発揮されます。