グラフ・データベース入門

グラフ・データベース入門。

グラフ・データベースは、オブジェクト間の簡素な関係や複雑な関係を検出するために便利です。これらのオブジェクトには、人、ソフトウェア、場所、自動車など、あらゆるものが考えられます。オブジェクトが他のオブジェクトと、およびその環境とどのように相互に作用するのかは、関係に左右されます。グラフ・データベースは、オブジェクト間の関係を完璧に表します。

グラフ・データベースは頂点、辺およびプロパティの3つの要素で構成されます。頂点は人やアーチファクトなどのオブジェクトです。辺は、ノード間の関係を定義します。頂点、辺、およびプロパティはそれぞれプロパティを持つことができます。このため、DSE Graphは、プロパティ・グラフとして分類されます。すべての要素のプロパティは、プロパティ・グラフの情報を保存したり、クエリーを実行したりするための重要な要素です。

プロパティ・グラフは一般的に大規模なグラフですが、プロパティ・グラフに対するクエリーの性質は、グラフに多数の頂点があるのか、辺があるのか、頂点と辺の両方があるのかによって異なります。手始めに、グラフ・データベースの概念を把握するために、わかりやすいようにサンプル・グラフを例にとってみましょう。ここでは、食べ物の分野を探索する例を使用します。

レシピ・サンプル・グラフ

グラフ・データベース内の頂点と辺のタイプを区別するために、要素にはラベルが付いています。著者についての情報を保存する頂点にはauthor(著者)というラベルが付けられています。グラフ内の辺にはauthored(著作)というラベルが付けられています。ラベルは、グラフを構成する頂点と辺のタイプを指定します。適切なラベルを指定することは、グラフ・データ・モデリングにおける重要なステップです。

頂点と辺は通常、プロパティを持っています。たとえば、author(著者)頂点は、name(名前)というプロパティを持つことができます。Gender(性別)とcurrent job(現在のジョブ)は、author頂点のその他のプロパティの例です。辺もプロパティを持ちます。created(創作)辺は、隣接するrecipe(レシピ)頂点が作成された年を識別するtimestamp(タイムスタンプ)プロパティを持つことができます。

プロパティもプロパティを持つことができます。著者が本の執筆中に住んでいた場所を考えてみましょう。執筆場所を知ることはそれ自体興味深いことではありますが、通常の調査では、個人が特定の場所に住んでいた日付に興味があります。Julia Childが彼女の最初の料理本の執筆中に住んでいたのが、フランスか米国かということは興味あることでしょうか。その料理本がフランス料理に関するものであれば、関連のあることです。

データをDSE Graphに取り込むにはさまざまな方法があります。
DSE Graph Loader
データはDSE Graph Loaderを使用して読み込むことができます。CSV、JSON、正規表現で解析されたテキスト、およびJDBC準拠のデータベースから選択されたデータは、コマンドライン・ツールを使用して読み込むことができます。
Gremlinコマンド
データは、Gremlinコマンドを使用して追加することができます。これは、開発とテストに使用するサンプル・グラフ(小さなグラフ)に役立つ方法です。APIは、Gremlinコマンドを使用してデータを追加するためのものでもあるため、Gremlinはスクリプトで一般的に使用されます。クイック・スタートには、グラフの作成および探索の実行のための一般的なGremlinコマンドが示されています。
Gryo
TitanまたはTinkerGraphに前に保存されていたデータはバイナリ形式のGryoを使用して読み込むことができます。
GraphSON
データは、人間が判読可能なデータの転送に役立つJSON形式のGraphSONで入力することができます。GraphSONファイルは転送中にデータ型の情報を失うことがあります。
GraphML
データは、グラフ・データの転送に役立つXML形式のGraphMLを使用して入力することができます。ただし、GraphMLデータ転送ではデータ型の情報が失われます。

データを読み込んだ後、graph traversals(グラフ探索)が実行され、フィルターされた情報が取得されます。リレーショナル・データベースでは、情報を組み合わせ、フィルターするqueries(クエリ—)が取得されます。グラフ・データベースでは、頂点プロパティ、辺接続、および辺プロパティはすべてグラフ内の開始点の選択、クエリ—に特定の答えを提供するための接続の探索で、それぞれ一定の役割を果たします。任意のGraphに対して、探索の実行で使用する探索戦略と探索エンジンを指定する複数のTraversalSourcesを生成することができます。複雑な内容の質問があった場合、グラフ・データベースのクエリーは複数の探索で構成されることがあります。また、1 + 1のような数学的計算が送信された場合、明らかに探索を含まないことがあります。