SQL Server 2017 新機能「グラフデータベース」

わーすーです。

SQL Server 2017がリリースされて早3ヶ月になります。
Linuxに対応したことが大きく取り上げられておりますが、他にもいくつか新機能や機能拡張したものがあります。
その中から今回は「グラフデータベース」を紹介します。
グラフデータベースは多対多の関係を表現するのが得意なデータベースです。
SNSの友達の同士の関係や写真や投稿に「いいね」をする際のつながりをイメージして頂ければと思います。

1.テーブル作成

実際にグラフデータベースを作って検証したいと思います。
SQL Server2017をインストールし、グラフデータベースを作成します。
今回はSNSにみられるような友人関係をテストデータとして登録します。

graph0.png

Taroの友達はHanakoとMasashi / Hanakoの友達はKen / Masashiの友達はYumiとTakumi

2.データ作成

早速データを作成します。
テスト用のデータベース(test)を作成し、ユーザーを格納するためのusersテーブル、友人関係を格納するためのFriendテーブルを作成します。 グラフデータベースではユーザーのテーブルをnode、データのつながりを表すテーブルをedgeとして作成します。

graph1.png

insertは通常の操作と同様です。追加後テーブルを確認します。

graph2.png

「$node_id_~」というIDが自動で追加されるのが分かります。
このノードID は、「$node_id」という名前で参照することができます。

次にFriendテーブルにデータを追加します。

graph3.png

Edgeテーブルへのinsertはnodeテーブルから「$node_id」を取得してそれを指定するようにします。
1つめのinsertでは、WHERE Name='Taro'と指定することで、Taroのノード ID を取得して、
「insert into Friend values(TaroのノードID, HanakoのノードID)」という形で、Taroの友達はHanakoであることを表しています。

3.データ確認

では、正常に登録できたかTaroさんの友達を確認してみます。

graph4.png

この際MATCHを利用します。u1、u2はusersテーブルの別名になり、f1はfriendテーブルの別名となります。
よって「(u1-(f1)->u2)」は「Taro-(egde)->users」となり、Taroとつながりのある友達を検索することができます。

この方法でTaroの友達の友達を検索することも可能です。

querystore5.png

以上、簡単ですがSQL Serverのグラフデータベースを紹介しました。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail