グラフ・データベースの概要

グラフ・データベースの概要。

グラフ・データベースは、オブジェクト間の単純な関係や複雑な関係を発見する上で役立ちます。オブジェクトには、人、ソフトウェア、場所、自動車をはじめ、考えられるすべての物が当てはまります。関係は、オブジェクトがオブジェクト同士およびオブジェクトの環境と対話する方法の基本となるものです。グラフ・データベースは、オブジェクト間の関係を完璧に表現することができます。

グラフ・データベースは、頂点、エッジ、プロパティという3つの要素で構成されます。頂点とは、人やアーチファクトなどのオブジェクトのことです。エッジは、ノード間の関係を定義します。頂点、エッジ、プロパティは、それぞれプロパティを持つ場合があります。そのため、DSE Graphはプロパティ・グラフに分類されます。これら3つすべての要素のプロパティは、プロパティ・グラフからの情報を格納し、クエリーするうえで重要な役割を果たします。

プロパティ・グラフは一般的に、サイズがかなり大きくなりますが、グラフのクエリーの性質は、そのグラフに頂点、エッジ、または頂点とエッジの両方が多数含まれるかどうかによって異なります。グラフ・データベースの概念をわかりやすく説明できるよう、サイズの小さい「トイ」グラフを使用することにします。この例では、世界の食べ物を探索します。

図: レシピ・トイ・グラフ

グラフ・データベース内の頂点とエッジのタイプを区別できるよう、各要素にラベルが付けられています。作者に関する情報を格納する頂点には、authorというラベルが付けられています。グラフ内のエッジには、authoredというラベルが付けられています。ラベルは、グラフを構成する頂点とエッジのタイプを指定します。適切なラベルを指定することは、グラフ・データ・モデリングにおける重要なステップです。

通常、頂点とエッジにはプロパティがあります。たとえば、author頂点はnameというプロパティを持つ場合があります。author頂点のプロパティの例としては、これ以外にも性別や現在の職業などがあります。エッジにもプロパティがあります。createdエッジは、隣接するrecipe頂点が作成された日時を識別するtimestampプロパティを持つ場合があります。

また、プロパティにプロパティがある場合もあります。たとえば、作者が本の執筆中に住んだことのある場所を考えてみてください。執筆が行われた場所を知ることは、それだけでも興味をそそる場合がありますが、一般的に照会者が知りたがるのは、作者が特定の場所に居住していた時期です。Julia Childが最初の料理本の執筆中にフランスと米国のどちらに住んでいたかを知ることは、興味深いことでしょうか?その料理本がフランス料理に関するものであれば、関連性のある情報かもしれません。

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

データを読み込んだ後で、フィルター済み情報を取得するためのグラフ探索が実行されます。リレーショナル・データベースでは、情報を組み合わせてフィルターするクエリーが取得されます。グラフ・データベースでは、頂点プロパティ、エッジ接続、エッジ・プロパティのすべてが、グラフにおける開始点の選択とクエリーに対する特定の回答を提供するための接続の探索に貢献します。探索の実行で使用される探索ストラテジと探索エンジンを提供するTraversalSourceは、任意のGraphについて生成できます。グラフ・データベースでのクエリーは、問い合わせの質問が複雑な場合はいくつかの探索で構成され、「1 + 1」のような数学的計算がサブミットされる場合は探索をほとんど含みません。