Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Sql server 2017 からはじめる graph データベース

1 529 vues

Publié le

プログラミング生放送勉強会 第49回@大阪 + わんくま同盟 大阪勉強会 #71
https://atnd.org/events/92249

Publié dans : Technologie
  • Soyez le premier à commenter

Sql server 2017 からはじめる graph データベース

  1. 1. SQL Server 2017 からはじめる Graph データベース プログラミング生放送勉強会 第49回@大阪 + わんくま同盟 大阪勉強会 #71 2017/11/18 SQLWorld お だ
  2. 2. 自己紹介 織田 信亮(おだ しんすけ) 大阪で開発者しています SQLWorld の代表です http://odashinsuke.hatenablog.com/ Twitter:@shinsukeoda
  3. 3. 今日のゴール Graph ってなに? SQL Server でも試してみるかー
  4. 4. SQL Server 2017 Microsoft が出してる RDBMS 最新版の 2017 が10月にリリース DB エンジン以外にも、色々な機能がある Integration Services Reporting Services Analysis Services ML Services …
  5. 5. https://www.microsoft.com/ja-jp/sql-server/sql-server-2017
  6. 6. Graph って何?
  7. 7. Graph って何? Node vertex (頂点) エンティティ Edge releationship 2つの Node を繋ぐ Property Node、Edge の属性
  8. 8. Property の例
  9. 9. もうちょっと詳しく
  10. 10. Node Table Node を表すテーブル create table グラフ_会場 ( 名称 nvarchar(20) not null primary key ) as node
  11. 11. Edge Table Edge を表すテーブル create table グラフ_利用 as Edge
  12. 12. データの追加 (Node Table) insert into グラフ_会場 values (N'MS関西支店') insert into グラフ_会場 (名称) values (N'エムオーテックス新大阪ビル')
  13. 13. データの追加 (Edge Table) INSERT の構文 insert into <table> values (<from_node_id>, <to_node_id>, val1, val2, ...) insert into <table> ($from_id, $to_id, col1, col2, ...) values (<from_node_id>, <to_node_id>, val1, val2, ...)
  14. 14. データの追加 (Edge Table) insert into グラフ_利用 values ( (select $node_id from グラフ_勉強会 where 名称 = N'プロ生第42回') , (select $node_id from グラフ_会場 where 名称 = N'MS関西支店') )
  15. 15. データの検索 (MATCH) select グラフ_勉強会.名称, グラフ_会場.名称 from グラフ_勉強会, グラフ_利用, グラフ_会場 where match (グラフ_勉強会 - (グラフ_利用) -> グラフ_会場)
  16. 16. データの検索 (MATCH) MATCH の構文 [node] : Node テーブル or エイリアス [edge] : Edge テーブル or エイリアス match ( [node] - ([edge]) -> [node] ) match ( [node] <- ([edge]) - [node] ) match ( [node] - ([edge]) -> [node] - ([edge]) -> [node] ) match ( [node] - ([edge]) -> [node] <- ([edge]) - [node] ) match ( [node] - ([edge]) -> [node] and [node] - ([edge]) -> [node] )
  17. 17. データの検索 (NOT EXISTS) MATCH は NOT / OR と一緒に使えない select [誰さん].[名前] as [誰々さんが], [好きな人].[名前] as [好きな人] from [人] [誰さん], [好き], [人] [好きな人] where match ([誰さん] - ([好き]) -> [好きな人]) and not exists ( select * from [好き] [nest] where match ([誰さん] <- ([nest]) - [好きな人]) )
  18. 18. DEMO Graph データを 触ってみる
  19. 19. どこで使う? 階層構造なデータ HyerarchyID でも出来るが、親が複数ある 等は、HyerarchyID では実現出来ない 複雑な多対多 相互につながった関係を分析する
  20. 20. どこで使う? 最短経路 SNS、CRM、CMS レコメンド 不正検知
  21. 21. サンプル紹介 レコメンド Graph extensions in Microsoft SQL Server 2017 and Azure SQL Database https://myignite.microsoft.com/videos/55108
  22. 22. 制限事項 テンポラリテーブル では使えない テーブル 変数でも使えない メモリ最適化テーブルに出来ない Edge テーブルの UPDATE で $from_id, $to_id を更新出来ない クロスデータベースクエリは未サポート $from_id, $to_id に特定の Node のみを 許可する制限は出来ない
  23. 23. まとめ Node と Edge(繋がり)の集まり SQL Server でも使えるようになった! 複雑な繋がりをシンプルなクエリで表現 SQL Server に統合されているので、SQL Server の他の機能と合わせて使える
  24. 24. 参考資料 Graph processing with SQL Server and Azure SQL Database https://docs.microsoft.com/en-us/sql/relational- databases/graphs/sql-graph-overview SQL Graph Architecture https://docs.microsoft.com/en-us/sql/relational- databases/graphs/sql-graph-architecture CREATE TABLE (SQL Graph) https://docs.microsoft.com/en-us/sql/t- sql/statements/create-table-sql-graph
  25. 25. 参考資料 INSERT (SQL Graph) https://docs.microsoft.com/en-us/sql/t- sql/statements/insert-sql-graph MATCH (Transact-SQL) https://docs.microsoft.com/en-us/sql/t-sql/queries/match- sql-graph SQL Server 2017 Graph Database Example https://www.mssqltips.com/sqlservertip/4883/sql-server- 2017-graph-database-example/

×