SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

PASS SUMMIT 2016 のセッションから見る SQL Server v.Next のグラフテーブル

leave a comment

SSMS 17.0 RC3 で SQL Server v.Next に接続をすると「グラフテーブル」というテーブルが表示されるようになります。
# SQL Database v12 に接続した場合も「Graph Table」が表示されます。

SQL Server のグラフテーブルは「ノードテーブル」「エッジテーブル」で構成されることが確認でき、構文自体も確認することができます。
image
 

CREATE TABLE dbo.sample_nodetable
(
    c1 int NOT NULL,
    c2 char(10) NULL,
    c3 datetime NULL,
    -- Unique index on $nodeid is required
    INDEX ix_graphid UNIQUE ($nodeid)
)
AS NODE
GO
CREATE TABLE dbo.sample_edgetable
(
    -- Columns are optional for Edge Tables
    --
    c1 int NOT NULL,
    c2 char(10) NULL,
    c3 datetime NULL,
    -- Unique index on $edgeid is required
    INDEX ix_graphid UNIQUE ($edgeid),
    -- indexes on $fromid and $toid support faster lookups
    INDEX ix_fromid ($fromid),
    INDEX ix_toid ($toid)
)
AS EDGE
GO

 
現状、この構文を実行するだけでは、構文エラーとなりグラフテーブルを作成することができないのですが、PASS  SUMMIT 2016 の「What’s New in Azure SQL Database」というセッションで、グラフテーブルについても解説がされていましたので、情報をまとめてみたいと思います。

グラフテーブルのノード / エッジは一般的なグラフデータベースやソーシャルグラフのノードとエッジの関係と同じようです。

ノード (節) と、ノードを接続するエッジ (枝) で構成され、このノードとエッジがテーブルで構成しているのがグラフテーブルとなるようです。
image
 
グラフテーブルを検索する際には「MATCH 句」を使用することで、ノードとエッジのつながりを指定するようになるようです。
セッション内では、以下のような WHERE 句が指定されていました。

WHERE MATCH(S - (MO) -> M - (R) -> F - (A) -> M1)

 
()内がエッジとなり、ノードがどのように伸びているかを条件として指定するようになるようです。

ノードテーブルやエッジテーブルのオプションとして指定した列についても WHERE  句で指定ができるようなので、値と節のつながりを条件に検索ができるようになっているようです。
SQL Server のグラフテーブルは

  • Full CROUD Support
  • Query Language Extension
  • Integrated in SQL Engine
  • Tooling and Echo-system

となっており、SQL Server に統合された、通常のテーブルと同じで、T-SQL ベースでの操作が可能な実装となっているようです。
SSMS で検索した結果としては、単純なテーブルの結果として表示されるようですが、Power BI の Force-Directed Graph を使用した可視化も実施できるようです。
このカスタムビジュアルは Source / Target を指定することで、以下のようなグラフを作成することができるのですが、このような表現の元データとして、グラフテーブルのデータを使用することができるようです。
image
現状、公開されている情報としては Some cool SQL Server announcements SQL Graph, Adaptive Query Plan, CTP1 of SQL vNext, SQL Injection detection  ぐらいのようですが、今後の情報が楽しみな機能ですね。

Share

Written by Masayuki.Ozawa

3月 29th, 2017 at 7:25 am

Posted in SQL Server

Tagged with ,

Leave a Reply