Microsoft SQL Graph Database

Slides:



Advertisements
Presentazioni simili
SQL applicato a SQL Server
Advertisements

Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
SQL (Standard query language) Istruzioni per la creazione di una tabella: Create table ( tipo, (, [vincoli]) Primary key ( ) CHIVE PRIMARIA Foreign key(
Progettazione ER Un database universitario contiene informazioni riguardanti i professori (identificati dal codice fiscale) e informazioni relative ai.
SQL Structured Query Language
Un DataBase Management System (DBMS) relazionale client/server.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Constraints.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Attribution-NonCommercial-ShareAlike Le novità
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
SQL (IV) Data Definition Language/ Data Manipulation Language.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Introduzione a SQL Server 2000 LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università.
Vincoli interrelazionali
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
#sqlsatPordenone #sqlsat495 February 27, 2016 SQL Server 2016 Temporal Database Support Gianluca
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Basi di dati - Fondamenti
Università degli Studi di Modena e Reggio Emilia
Lato Server - OMNIS Web Web Services.
Crea il tuo sistema aziendale sul web a partire dei fogli Excel che usi. ShareXLS
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
CREAZIONE UTENTE SU ORACLE1
Creare tabelle in sql Ripasso!.
Salvatore Upload data on Azure SQL Database using Azure Messaging, Stream Analytics & Logic Apps Salvatore
COME SI CREA UNA TABELLA CON UNA CHIAVE ESTERNA
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
ORACLE Corso Base Copyright © Maggio 2008 Assi Loris Versione : 1
Corso di Basi di Dati Il Linguaggio SQL
SQL Server deployment journey da dev a ops
Vito Flavio Lorusso – Senior SDE - Microsoft
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Frequenza di fallimento della terapia di prima linea basata su INI vs
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Creare un server casalingo - 3
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Linguaggio SQL prima parte
Windows Admin Center La rivoluzione della gestione di Windows Server
Access.
Basi di dati - Fondamenti
ABAP Objects ALV Grid Mantova, 30 dicembre 2018.
SQL per la modifica di basi di dati
Structured Query Language
Grafi e problem solving
Build /13/2019 ASP.NET Core Web API all’opera Problemi veri nello sviluppo di un backend vero Marco Minerva Microsoft MVP Windows Development
Docente: Sabato Bufano
Transcript della presentazione:

Microsoft SQL Graph Database Salvatore Pellitteri Microsoft SQL Graph Database

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

Organizers GetLatestVersion.it

Sponsors

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»

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)

perchè graph database

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

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

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

il modello e l’architettura

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

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

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à

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

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)

Node Table Quando viene selezionata la colonna $node_id, viene visualizzato un valore calcolato sotto forma di stringa JSON. https://docs.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-architecture?view=sql-server-2017

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

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)

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

Node & Edge table

Demo Creazione Modello

interrogare e modificare

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;

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.

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);

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;

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);

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);

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)

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}';

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

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

Demo Interrogare il modello

le gerarchie

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

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

considerazioni

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

SQL Server 2019 Edge constraint MATCH in MERGE DML

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

Visualization

PowerBI Visualization

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

R Integration

R Integration Installo Machine Learning Services Eseguo la sp_configure 'external scripts enabled’, 1 Download http://igraph.org/nightly/get/r-win/igraph_1.0.1.zip Download https://cran.r-project.org/bin/windows/contrib/3.5/magrittr_1.5.zip RunAs admin "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\R.exe" install.packages("C:\\Users\\salvatore\\OneDrive\\Work\\Events\\2018 - SQL Saturday\\R Integration\\igraph_1.0.1.zip") install.packages("C:\\Users\\salvatore\\OneDrive\\Work\\Events\\2018 - SQL Saturday\\R Integration\\magrittr_1.5.zip")

R Integration

Demo Visualization

Thanks!