BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Graph Database について

Graph Database について

原文(投稿日:2010/09/15)へのリンク

我々は、sones GmbH の創立者でCTOの Daniel Kirstenpfad 氏と グラフ データベース(Graph Databases)について話した。それがソーシャル ネットワーク アプリケーションにおける関係のような、データのある型をモデル化するのに、どうして優れているのかを聞いた。

グラフ データベースとは何か、そして、なぜ開発者は、これまでのデータベースに代わって、それを選ぶのかを尋ねた。

データを行と列のペア、あるいは、キーと値のペアで保存する他のデータベースと違って、グラフ データベースは、すべての情報をノードとエッジ(Edge)のネットワークに保存します。エッジは、オブジェクトを効果的に表現するノード間のコネクションを表します。エッジとノードは、オブジェクト(開発者がよく慣れているオブジェクトのように)として、表現されるので、それらに特性(時々プロパティといわれる)を与えることができます。エッジに方向を加えると、結局、グラフ データベースの内部で、データの明示的な構造を表現する、いわゆるプロパティ グラフを生成します。

なので、他のデータベースのアプローチが、暗黙的にしか、グラフ構造を形成できないのに対して、グラフ データベースは、グラフを明示的に表現します。そして、他のデータベースは、インデックスやリレーショナル ヘルパ(JOINを使って結合されるリレーショナル テーブルのような)を使う必要がありますが、グラフ データベースは、1つのオブジェクトから次のオブジェクトへトラバースできます。それらのオブジェクトがインデクス無しの隣接性を持てるように整理されているからです。

グラフ データベースが最も自然なアプローチであるようなユースケースは、たくさんあります。例えば、ソーシャル ネットワークで、グラフ データ構造を使って、友達関係を表現したり、トラバースしたり、「私の友達の友達の友達を全部あげろ」のようなクエリをするのがずっと簡単になります。更に、経路探索のような共通のグラフベースのアルゴリズムは、グラフ中をトラバースすることによって、実装するのが簡単です。

これら全ての素晴らしいフィーチャの他に、 sones GraphDBは、また覚えるのと使うのが簡単な、クエリ言語を提供しているので、SQLデータベースに慣れていた人が、アドホックでクエリを使うことができます。上記の例であれば、クエリは次のようになります: FROM Users u SELECT u.Friends.Friends.Friends WHERE Name = "Daniel"

あなた方の製品は、組み込めますか、別個のサービスとしてのみで走りますか?

sones GraphDBは、ほとんどどのようなアプリケーションにも組み込めます。C# (.NET)で書かれていますので、当然、既存の.NET環境に統合できます。Windows上の Microsoft .NETあるいは、他のプラットフォームのMonoの環境にですね。現行製品で、我々は、異なったインターフェースを提供するクライアント-サーバ アプローチに焦点を合わせています。例えば、我々の製品は、統合されたセルフホスティングのREST インターフェースを持っています。セルフホスティングの意味するところは、GraphDBをホストするのに、いかなるサードパーティのサービスも不要だ、ということです。

.NET API は、使えますか?

.NET API は、使えます。現在公開されているリリースに含まれています。このAPIは、組込まれた環境で使えます、 sonesExampleのソースコードでは、この方法でデモされています(http://github.com/sones/sones/blob/master/Applications/sonesExample/sonesExample.cs -> 行 74, 94, 114, 197,...を見てください。)

我々は、現在.NET クライアント ライブラリを追加しているところで、 sones GraphDB サーバにオブジェクト指向のアクセスができるようになります。C#を知っている世界から離れる必要は、ありませんし、JSONやXMLによるパースの必要もありません。このライブラリは、Javaでも使えるようにする計画です。

ものごとを更に進めて、我々は、このクライアント ライブラリをLINQからも使えるようにするつもりです。

Windows Azure 版を提供するのに、何か変更が必要なのですか?

クラウド サービスのインフラが複雑でも、 GraphDB製品を Windows Azure上で動かすのは、驚くほど簡単です。 一般的に、Windows Azureのインフラに GraphDBがそのステータスを知らせるのを助けるために、繋ぎのコードを新しく加えるだけです。コアやインターフェースに、コードの変更は、必要ありません。

現在、我々は、 GraphDBにいくつかの新しいモジュールを加えています-その内の1つは、 Azure Page Blob Storage技術を使っているので、グラフ データベースを永続化したり、それによって、我々のユーザが、もっと面白い使い方ができるようになります。

あなたが、競合だと考えている他のグラフ データベースがありますか?

いくつかもグラフ データベースがありますが、それらは、ほとんど、特に1つないし、いくつかのユースケースに合うように、カスタマイズされています。顧客に、選択の余地があるのは、いつもいいことです。sonesは、エンタープライズ レベルのデータベース管理システムを作ることから始めていたので、我々は、最終的には、それを作成する、というゴールを達成したいと考えています。いくつかのユースケースでは、 Infogrid, Neo4j あるいは、InfiniteGraphからの製品が競合だと思っています。使い勝ってがいいことや直感的なクエリ言語のようなフィーチャとなると、.NET統合や最先端のデータストレージ技術によって、グラフばかりでなく、巨大なバイナリデータの保存ができるバージョンやエディションがあります。我々には,たくさんのユニークなセールス ポイントがあると思います。

この記事に星をつける

おすすめ度
スタイル

BT