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

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

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

グラフ・データベースは以下の3つの要素で構成されます。
頂点
頂点とは、人、場所、自動車、レシピ、または名詞として考えられるその他すべてのものを含むオブジェクトです。
エッジ
エッジは、2つの頂点の間の関係を定義します。人は、ソフトウェアを作成できます。また、作者は本を執筆することができます。エッジを定義する際は動詞を考えてください。
プロパティ
頂点またはエッジのいずれかの属性をいくつか記述したキーと値のペア。プロパティ・キーは、キーと値のペアでキーを記述するために使用します。DSE Graphではすべてのプロパティはグローバルです。これは、どの頂点についてもプロパティを使用できることを意味します。たとえば、グラフ内のすべての頂点に対して「name」というプロパティを使用できます。
頂点、エッジ、プロパティは、それぞれプロパティを持つ場合があります。そのため、DSE Graphはプロパティ・グラフに分類されます。要素のプロパティは、プロパティ・グラフに情報を保存したり、クエリーを実行したりするための重要な要素です。

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

1. レシピ・トイ・グラフ

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

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

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

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

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