La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Microsoft SQL Graph Database

Presentazioni simili


Presentazione sul tema: "Microsoft SQL Graph Database"— Transcript della presentazione:

1 Microsoft SQL Graph Database
Salvatore Pellitteri Microsoft SQL Graph Database

2 Salvatore Pellitteri | @pellittsa
Developer Team Manager in Microsys Srl. Microsoft MVP Azure – Application Integration Microsoft P-Seller competenza Data Platform SQL / BI / Integration Architect

3 Organizers GetLatestVersion.it

4 Sponsors

5 Introduzione «Con il rilascio di SQL Server 2017, Microsoft ha aggiunto il supporto per i graph database per gestire più semplicemente dati che contengono relazioni di entità complesse, pensiamo ai social media per esempio, in cui è possibile avere molteplici relazioni molti-a-molti che cambiano frequentemente»

6 Agenda Perchè e quando usare Graph Database
Costruire il modello e l’architettura Come interrogare e modificare i dati Le gerarchie Considerazioni Visualizzazione (PowerBI & R Server)

7 perchè graph database

8 Perchè Graph Database references SQL Server Articles references
SQL Server Components & Features writes likes Developers & Administrators likes likes

9 Perchè Graph Database Analisi di dati altamente interconnessi
references SQL Server Articles references Analisi di dati altamente interconnessi Relazioni molti-a-molti complesse e in continua evoluzione Dati gerarchici (HierarchyID) SQL Server Components & Features writes likes Developers & Administrators likes likes

10 Terminologia Nodo - Vertice Node A Arco – Lato - Spigolo Edge

11 il modello e l’architettura

12 Costruire il modello nodes edges Articles Dev & Adm Components
D&A write articles Articles reference components Articles reference articles D&A like articles D&A like components D&A like D&A A

13 Costruire il modello Tabelle “Node” Tabelle “Edge” Una per ogni entità
Una per ogni relazione Una per tutte le relazioni Una per gruppi/tipologie di relazioni

14 Costruire il modello Tabelle “Node” & “Edge” sono user-defined table:
Non è necessario costruire database a parte o “speciali” Le tabelle Node devono contenere almeno una proprietà (ovvio) Le tabelle Edge possono contenere proprietà

15 Node Table CREATE TABLE Components (
ComponentID INT IDENTITY PRIMARY KEY, ComponentName NVARCHAR(100) NOT NULL,    ComponentDescription NVARCHAR(100) NOT NULL ) AS NODE;

16 Node Table Viste sys.tables e sys.columns modificate
Colonna $node_id: identifica univocamente un determinato nodo nel database I valori in $node_id vengono generati automaticamente (object_id + valore bigint generato)

17 Node Table Quando viene selezionata la colonna $node_id, viene visualizzato un valore calcolato sotto forma di stringa JSON.

18 Edge Table CREATE TABLE Write AS EDGE; CREATE TABLE Reference AS EDGE;
CREATE TABLE Likes ( score int ) AS EDGE;

19 Edge Table Viste sys.tables e sys.columns modificate
Colonna $edge_id: identifica univocamente una istanza edge nel database I valori in $edge_id vengono generati automaticamente (object_id + valore bigint generato)

20 Edge Table Quando viene selezionata la colonna $edge_id, viene visualizzato un valore calcolato sotto forma di stringa JSON. $from_id contiene il $node_id sorgente $to_id contiene il $node_id di destinazione

21 Node & Edge table

22 Demo Creazione Modello

23 interrogare e modificare

24 Query graph db SELECT DevAdmins.Nickname, Components.ComponentName,
Components.ComponentDescription FROM DevAdmins INNER JOIN Likes ON DevAdmins.$node_id = Likes.$from_id INNER JOIN Components ON Likes.$to_id = Components.$node_id;

25 Query graph db – MATCH function
E’ stata aggiunta specificatamente per interrogare le graph table E’ possible usarla solo nelle WHERE di una SELECT che interroga NODE e EDGE table E’ possibile combinarla con altre clausole di WHERE ma solo in AND, OR e NOT non sono disponibili.

26 Query graph db – MATCH function
SELECT DevAdmins.Nickname, Components.ComponentName, Components.ComponentDescription FROM DevAdmins INNER JOIN Likes ON DevAdmins.$node_id = Likes.$from_id INNER JOIN Components ON Likes.$to_id = Components.$node_id; SELECT DevAdmins.Nickname, Components.ComponentName, Components.ComponentDescription FROM DevAdmins, Likes, Components WHERE MATCH(DevAdmins-(Likes)->Components);

27 Query graph db – MATCH function
SELECT DevAdmins.Nickname, Components.ComponentName, Components.ComponentDescription FROM DevAdmins, Likes, Components WHERE MATCH(DevAdmins-(Likes)->Components) AND Likes.score > 3;

28 Query graph db – MATCH function
SELECT DevAdmins.Nickname, Articles.Title, Components.ComponentDescription FROM DevAdmins, Write, Articles, Reference, Components WHERE MATCH(DevAdmins-(Write)->Articles-(Reference)->Components);

29 Query graph db – MATCH function
SELECT DevAdmins.Nickname, Articles.Title, DevAdminsLike.Nickname FROM DevAdmins, Write, Articles, Likes, DevAdmins DevAdminsLike WHERE MATCH(DevAdmins-(Write)->Articles<-(Likes)-DevAdminsLike);

30 Altre funzioni Node table functions Edge table functions
OBJECT_ID_FROM_NODE_ID($node_id) GRAPH_ID_FROM_NODE_ID($node_id) NODE_ID_FROM_PARTS(object_id, graph_id) Edge table functions OBJECT_ID_FROM_EDGE_ID($edge_id) GRAPH_ID_FROM_EDGE_ID($edge_id) EDGE_ID_FROM_PARTS(object_id, graph_id)

31 Delete & Update DELETE Likes FROM DevAdmins, Likes, Components WHERE
MATCH(DevAdmins-(Likes)->Components) AND ComponentID = 3; DELETE Likes WHERE $edge_id = '{"type":"edge","schema":"dbo","table":"Likes","id":8}';

32 Insert & Delete No constraint / No cascade (SQL 2017)
Gestione manuale dell’integrità dei dati Creazione di trigger

33 Best practice SQL non crea indici unique SQL non crea constraint
Dobbiamo creare noi indici unique sia nelle node che nelle edge table per evitare duplicati (best practice) Non ci sono constraint nelle edge che limitano la tipologia di tabelle node sorgenti o destinazioni quindi

34 Demo Interrogare il modello

35 le gerarchie

36 Gerarchie A.D. Dir. Amministrativo Marco Sara Dir. Commerciale Giovanni Bruno Dir. Produzione Michela Luca Dir. IT BI Specialist System Eng. ? Es: BI Specialist fa parte della Direzione IT ma lavora per una persona della Direzione commerciale

37 Gerarchie CREATE TABLE Employees (
EmployeeID INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL ) AS NODE; CREATE TABLE ReportsTo AS EDGE; CREATE TABLE WorkFor Percent INT NULL ) AS EDGE; Report To Employees Work For

38 considerazioni

39 Limitazioni Table type Table variable Tabelle temporanee
Tabelle in-memory Temporal table Cross database query

40 SQL Server 2019 Edge constraint MATCH in MERGE DML

41 Cosa manca UNION (ma...) LOOP
Polymorphism (ricerca ricorsiva su tutti i nodi e archi) LOOP Transitive closure (ricerca ricorsiva per specifici nodi, archi e profondità) LOOP & Temp Table Shortest path LOOP & TempTable Page rank

42 Visualization

43 PowerBI Visualization

44 PowerBI Visualization
Non è possible accedere direttamente alle tabelle Vanno sviluppate delle viste

45 R Integration

46 R Integration Installo Machine Learning Services
Eseguo la sp_configure 'external scripts enabled’, 1 Download Download RunAs admin "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\R.exe" install.packages("C:\\Users\\salvatore\\OneDrive\\Work\\Events\\ SQL Saturday\\R Integration\\igraph_1.0.1.zip") install.packages("C:\\Users\\salvatore\\OneDrive\\Work\\Events\\ SQL Saturday\\R Integration\\magrittr_1.5.zip")

47 R Integration

48 Demo Visualization

49 Thanks!


Scaricare ppt "Microsoft SQL Graph Database"

Presentazioni simili


Annunci Google