類似点と相違点

DSE Graphとリレーショナル・データベースの主な機能を比較します。

類似点と相違点。

グラフ・データベースとリレーショナル・データベースはどちらもデータを格納できます。どちらのタイプのデータベースもクエリー可能であるため、格納されるデータからフィルターされた結果を取得できます。データを格納してクエリーする方法は、まったく異なります。

リレーショナル・データベース管理システム(RDBMS)は、データをテーブルに格納します。キーは、データ取得に定義されます。2つの異なるテーブルのデータ間に関係がある場合、外部キーはテーブルをリンクするよう定義されます。データは正規化されます。つまり、重複しないようにデータが格納されます。リレーショナル・データベースの複雑なクエリーを作成するには、複数のテーブルにアクセスし、取得したデータを結合する必要があります。

グラフ・データベースもデータをテーブルに格納します。DSE Graphは、データをCassandraテーブルに格納します。グラフ・データベースでは、データ間の関係はデータ・モデルに組み込まれています。グラフ・データベースのデータ・ストレージは、組み込まれているデータ関係によって、あらかじめ結合されたRDBMSにリンクできます。データを取得するには、時間がかかりエラーが多いJOINSをSQL(Structured Query Language)で作成するのではなく、グラフを探索します。

グラフ・データベースには、データベースのディストリビューションをスケールアウトする機能が特別に追加されています。グラフ・データベース・クエリーは、特定の頂点から始まり、クエリー要件に基づいてグラフをフィルターします。通常、取得にはグラフ全体のサブセットのフィルターが必要になるため、グラフをパーティション分割できます。クエリーは、DSEクラスターの1つまたは少数のノードを、一部の探索手順と並行して操作できます。テーブルの相互関連性と、多数のテーブルにアクセスしてデータを結合しクエリーを正常実行する要件があるため、リレーショナル・データベースのスケールアウトおよび分散を行うのは困難です。

グラフ・データベースとリレーショナル・データベース間のインデックス作成手法はまったく異なるため、パフォーマンスに著しく影響を及ぼすことがあります。以下の例は、その違いを示しています。Xbox Oneを購入したすべての購入者を調べるクエリーを検討してみましょう。リレーショナル・データベースでは、クエリーに対する回答を得るために3つのテーブルがアクセスされます。

データにアクセスしてクエリーするために、以下の3つのインデックス検索が必要になります。
  • 購入者テーブルの各購入者
  • アイテム・テーブル内のクエリーされるアイテム
  • 購入者-アイテム結合テーブル内の購入者およびアイテム

それに対し、グラフ・データベースで必要となるアイテムのインデックス検索は1つだけであり、グラフを各購入者の頂点まで探索してクエリーを行います。

グラフ・データベース・クエリーの時間実行はほぼ一定です。リレーショナル・データベース・クエリーは、B-treeインデックスを前提とする場合、O(log2 N)時間だけ実行されます。ここで、Nは、参照する必要がある外部キーごとのテーブル内のレコード数です。1層クエリーであったとしても、これによりパフォーマンスに大きな差が生じ、より深くネストされた深さのクエリーになると、パフォーマンスのギャップが広がります。

DSE GraphとSQLベースのデータベースの比較において考慮すべきもう1つの要因は、複雑なクエリーの作成のしやすさです。製品について推奨されるエンジンに必要なクエリーを検討してください。これによりGremlin言語の直感的な性質がわかります。

SQLに慣れている開発者は多いと思いますが、この例は、専門家であっても扱いにくいほどクエリーが複雑になることを示しています。それに対して、Gremlinクエリーは左から右へと読み取ることができるので、各ステップを次々に行うことができます。