Introduzzjoni għal SQL Server 2017 Graph Databases

Qabel il-bidu tal-kors "MS SQL Server Developer" Ħejjejna traduzzjoni utli oħra għalik.

Id-databases tal-grafiċi huma teknoloġija importanti għall-professjonisti tad-databases. Nipprova nlaħħaq ma' innovazzjonijiet u teknoloġiji ġodda f'dan il-qasam u, wara li naħdem ma' databases relazzjonali u NoSQL, nara r-rwol tad-databases tal-grafiċi qed isir dejjem aktar importanti. Meta taħdem ma 'dejta ġerarkika kumplessa, mhux biss databases tradizzjonali huma ineffettivi, iżda wkoll NoSQL. Ħafna drabi, hekk kif in-numru ta 'livelli ta' konnessjoni u d-daqs tad-database jiżdiedu, il-prestazzjoni tonqos. U hekk kif ir-relazzjonijiet isiru aktar kumplessi, in-numru ta 'JOINs jiżdied ukoll.

Naturalment, il-mudell relazzjonali għandu soluzzjonijiet biex taħdem ma 'ġerarkiji (per eżempju, bl-użu ta' CTEs rikorsivi), iżda dawn għadhom soluzzjonijiet. Fl-istess ħin, il-funzjonalità tad-databases tal-grafiċi SQL Server tippermettilek li timmaniġġja faċilment livelli multipli ta 'ġerarkija. Kemm il-mudell tad-dejta kif ukoll il-mistoqsijiet huma ssimplifikati, u għalhekk l-effiċjenza tagħhom tiżdied. L-ammont ta 'kodiċi huwa mnaqqas b'mod sinifikanti.

Id-databases tal-grafiċi huma lingwaġġ espressiv biex jirrapreżentaw sistemi kumplessi. Din it-teknoloġija diġà tintuża ħafna fl-industrija tal-IT f'oqsma bħal netwerks soċjali, sistemi kontra l-frodi, analiżi tan-netwerk tal-IT, rakkomandazzjonijiet soċjali, rakkomandazzjonijiet tal-prodotti u tal-kontenut.

Il-funzjonalità tad-database tal-graff f'SQL Server hija adattata għal xenarji fejn id-dejta hija interkonnessa ħafna u għandha relazzjonijiet definiti sew.

Mudell tad-Dejta tal-Graff

Graff huwa sett ta' vertiċi (nodi) u truf (relazzjonijiet, tarf). Il-vertiċi jirrappreżentaw entitajiet, u t-truf jirrappreżentaw relazzjonijiet li l-attributi tagħhom jista 'jkun fihom informazzjoni.

Database tal-graff timmudella entitajiet bħala graff kif definit fit-teorija tal-graff. L-istrutturi tad-dejta huma vertiċi u truf. L-attributi huma proprjetajiet ta' vertiċi u truf. Konnessjoni hija konnessjoni ta 'vertiċi.

B'differenza mill-mudelli tad-dejta l-oħra, id-databases tal-grafiċi jipprijoritizzaw ir-relazzjonijiet bejn l-entitajiet. Għalhekk, m'hemmx bżonn li jiġu kkalkulati relazzjonijiet bl-użu ta 'ċwievet barranin jew kwalunkwe mezz ieħor. Huwa possibbli li jinħolqu mudelli ta 'dejta kumplessi bl-użu biss ta' astrazzjonijiet tal-vertiċi u tat-tarf.

Fid-dinja moderna, l-immudellar tar-relazzjonijiet jeħtieġ tekniki dejjem aktar kumplessi. Biex timmudella r-relazzjonijiet, SQL Server 2017 joffri kapaċitajiet ta' database tal-graff. Il-vertiċi u t-truf tal-graff huma rappreżentati bħala tipi ġodda ta' tabelli: NODE u EDGE. Mistoqsijiet graff jużaw funzjoni T-SQL ġdida msejħa MATCH(). Peress li din il-funzjonalità hija mibnija fis-SQL Server 2017, tista 'tintuża fid-databases eżistenti tiegħek mingħajr il-ħtieġa ta' xi konverżjoni.

Benefiċċji tal-mudell tal-graff

Illum, in-negozji u l-utenti jitolbu applikazzjonijiet li jimmaniġġjaw aktar u aktar data, filwaqt li jistennew prestazzjoni u affidabilità għolja. Ir-rappreżentazzjoni tad-dejta bħala graff toffri mezz konvenjenti biex jiġu mmaniġġjati relazzjonijiet kumplessi. Dan l-approċċ isolvi ħafna problemi u jgħin biex jinkisbu riżultati f'kuntest partikolari.

Jidher li ħafna applikazzjonijiet se jibbenefikaw mill-użu tad-databases tal-grafiċi fil-futur.

Immudellar tad-dejta: minn mudell relazzjonali għal graff

Introduzzjoni għal SQL Server 2017 Graph Databases
Eżempju

Ejja nħarsu lejn eżempju ta 'struttura organizzattiva b'ġerarkija ta' impjegati: impjegat jirrapporta lil maniġer, maniġer jirrapporta lil maniġer anzjan, eċċ. Skont il-kumpanija speċifika, jista 'jkun hemm kwalunkwe numru ta' livelli f'din il-ġerarkija. Iżda hekk kif in-numru ta 'livelli jiżdied, il-kalkolu tar-relazzjonijiet f'database relazzjonali jsir aktar u aktar diffiċli. Huwa pjuttost diffiċli li wieħed jimmaġina l-ġerarkija tal-impjegati, il-ġerarkija fil-marketing jew il-konnessjonijiet fin-netwerks soċjali. Ejja naraw kif SQL Graph jista 'jsolvi l-problema tal-immaniġġjar ta' livelli differenti ta 'ġerarkija.

Għal dan l-eżempju se nagħmlu mudell tad-dejta sempliċi. Ejja noħolqu tabella ta 'impjegati EMP bl-ID EMPNO u kolonna M.G.R., li jindika l-identifikatur tas-superviżur (maniġer) tal-impjegat. L-informazzjoni kollha dwar il-ġerarkija hija maħżuna f'din it-tabella u tista' tiġi mistoqsija bl-użu ta' kolonni EMPNO и M.G.R..

Introduzzjoni għal SQL Server 2017 Graph Databases
Id-dijagramma li ġejja turi l-istess mudell ta 'struttura organizzattiva b'erba' livelli ta 'bejta f'forma aktar familjari. L-impjegati huma l-punti ta' graff minn tabella EMP. L-entità “impjegat” hija konnessa magħha nnifisha mill-konnessjoni “jissottometti” (ReportsTo). F'termini ta 'graff, rabta hija tarf (EDGE) li jgħaqqad nodi (NODE) ​​​​ta' impjegati.

Introduzzjoni għal SQL Server 2017 Graph Databases

Ejja noħolqu tabella regolari EMP u żid il-valuri hemmhekk skont id-dijagramma ta 'hawn fuq.

CREATE TABLE EMP
(EMPNO INT NOT NULL,
ENAME VARCHAR(20),
JOB VARCHAR(10),
MGR INT,
JOINDATE DATETIME,
SALARY DECIMAL(7, 2),
COMMISIION DECIMAL(7, 2),
DNO INT)
 
INSERT INTO EMP VALUES
(7369, 'SMITH', 'CLERK', 7902, '02-MAR-1970', 8000, NULL, 2),
(7499, 'ALLEN', 'SALESMAN', 7698, '20-MAR-1971', 1600, 3000, 3),
(7521, 'WARD', 'SALESMAN', 7698, '07-FEB-1983', 1250, 5000, 3),
(7566, 'JONES', 'MANAGER', 7839, '02-JUN-1961', 2975, 50000, 2),
(7654, 'MARTIN', 'SALESMAN', 7698, '28-FEB-1971', 1250, 14000, 3),
(7698, 'BLAKE', 'MANAGER', 7839, '01-JAN-1988', 2850, 12000, 3),
(7782, 'CLARK', 'MANAGER', 7839, '09-APR-1971', 2450, 13000, 1),
(7788, 'SCOTT', 'ANALYST', 7566, '09-DEC-1982', 3000, 1200, 2),
(7839, 'KING', 'PRESIDENT', NULL, '17-JUL-1971', 5000, 1456, 1),
(7844, 'TURNER', 'SALESMAN', 7698, '08-AUG-1971', 1500, 0, 3),
(7876, 'ADAMS', 'CLERK', 7788, '12-MAR-1973', 1100, 0, 2),
(7900, 'JAMES', 'CLERK', 7698, '03-NOV-1971', 950, 0, 3),
(7902, 'FORD', 'ANALYST', 7566, '04-MAR-1961', 3000, 0, 2),
(7934, 'MILLER', 'CLERK', 7782, '21-JAN-1972', 1300, 0, 1)

L-istampa hawn taħt turi l-impjegati:

  • impjegat ma EMPNO 7369 jobdi 7902;
  • impjegat ma EMPNO 7902 jobdi 7566
  • impjegat ma EMPNO 7566 jobdi 7839

Introduzzjoni għal SQL Server 2017 Graph Databases
Issa ejja nħarsu lejn rappreżentazzjoni graff tal-istess data. Il-vertiċi IMPJEGAT għandu diversi attributi u huwa konness miegħu nnifsu bir-relazzjoni "subordinati" (EmplReportsTo). EmplReportsTo huwa l-isem tar-relazzjoni.

It-tabella tat-tarf (EDGE) jista' jkun fiha wkoll attributi.

Introduzzjoni għal SQL Server 2017 Graph Databases
Ejja noħolqu tabella node EmpNode

Is-sintassi għall-ħolqien ta 'node hija pjuttost sempliċi: għall-espressjoni ĦOLQI TABELLA huwa miżjud fl-aħħar "KIF NODU".

CREATE TABLE dbo.EmpNode(
ID Int Identity(1,1),
EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
MGR NUMERIC(4),
DNO INT
) AS NODE;

Issa ejja nikkonverti d-dejta minn tabella regolari għal tabella graff. Li jmiss DAĦĦAL idaħħal data minn tabella relazzjonali EMP.

INSERT INTO EmpNode(EMPNO,ENAME,MGR,DNO) select empno,ename,MGR,dno from emp

Introduzzjoni għal SQL Server 2017 Graph Databases
Fit-tabella tan-nodi f'kolonna speċjali $node_id_* l-identifikatur tan-node huwa maħżun bħala JSON. Il-kolonni li jifdal ta' din it-tabella fihom l-attributi tan-node.

Il-ħolqien tat-truf (EDGE)

Il-ħolqien ta 'tabella tat-tarf huwa simili ħafna għall-ħolqien ta' tabella ta 'nodi, ħlief li tintuża l-kelma prinċipali "KIF XIFER".

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Introduzzjoni għal SQL Server 2017 Graph Databases

Issa ejja niddefinixxu konnessjonijiet bejn l-impjegati li jużaw kolonni EMPNO и M.G.R.. Id-dijagramma tal-istruttura organizzattiva turi b'mod ċar kif tikteb DAĦĦAL.

INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 1),
   	(SELECT $node_id FROM EmpNode WHERE id = 13),20);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 2),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),10);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 3),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),10)
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 4),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 5),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 6),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 7),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 8),
   	(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 9),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 10),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 11),
   	(SELECT $node_id FROM EmpNode WHERE id = 8),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 12),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 13),
   	(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 14),
   	(SELECT $node_id FROM EmpNode WHERE id = 7),30);

It-tabella tat-tarf default tikkonsisti fi tliet kolonni. L-ewwel, $edge_id — identifikatur tat-tarf fil-forma JSON. It-tnejn l-oħra ($from_id и $to_id) jirrappreżentaw il-konnessjoni bejn in-nodi. Barra minn hekk, it-truf jista 'jkollhom proprjetajiet addizzjonali. Fil-każ tagħna huwa Deptno.

Veduti tas-Sistema

Fil-fehma tas-sistema sys.tables dehru żewġ kolonni ġodda:

  1. is_edge
  2. is_node

SELECT t.is_edge,t.is_node,*
FROM sys.tables t
WHERE name like 'emp%'

Introduzzjoni għal SQL Server 2017 Graph Databases

ssms

Oġġetti relatati mal-grafiċi jinsabu fil-folder tat-Tabelli tal-Graffi. L-ikona tal-mejda tan-nodi hija mmarkata b'tikka, u l-ikona tat-tabella tat-tarf hija mmarkata b'żewġ ċrieki konnessi (daqsxejn bħal nuċċalijiet).

Introduzzjoni għal SQL Server 2017 Graph Databases

MATCH espressjoni

Espressjoni MATCH meħuda minn CQL (Cypher Query Language). Dan huwa mod effiċjenti biex issir mistoqsija dwar il-proprjetajiet ta' graff. CQL jibda b'espressjoni MATCH.

sintassi

MATCH (<graph_search_pattern>)
 
<graph_search_pattern>::=
    {<node_alias> {
                 	{ <-( <edge_alias> )- }
               	| { -( <edge_alias> )-> }
             	<node_alias>
             	}
 	}
 	[ { AND } { ( <graph_search_pattern> ) } ]
 	[ ,...n ]
 
<node_alias> ::=
    node_table_name | node_alias
 
<edge_alias> ::=
    edge_table_name | edge_alias

eżempji

Ejja nħarsu lejn ftit eżempji.

Il-mistoqsija hawn taħt turi l-impjegati li Smith u l-maniġer tiegħu jirrapportaw lilhom.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR
FROM
    empnode e, empnode e1, empReportsTo m
WHERE
    MATCH(e-(m)->e1)
and e.ENAME='SMITH'

Introduzzjoni għal SQL Server 2017 Graph Databases
Il-mistoqsija li ġejja hija biex jinstabu impjegati u maniġers tat-tieni livell għal Smith. Jekk tneħħi s-sentenza FEJN, allura r-riżultat se juri l-impjegati kollha.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2
WHERE
    MATCH(e-(m)->e1-(m1)->e2)
and e.ENAME='SMITH'

Introduzzjoni għal SQL Server 2017 Graph Databases
U fl-aħħarnett, talba għal impjegati u maniġers tat-tielet livell.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
    MATCH(e-(m)->e1-(m1)->e2-(m2)->e3)
and e.ENAME='SMITH'

Introduzzjoni għal SQL Server 2017 Graph Databases
Issa ejja nbiddlu d-direzzjoni biex niksbu l-kapijiet ta’ Smith.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
    MATCH(e<-(m)-e1<-(m1)-e2<-(m2)-e3)

Introduzzjoni għal SQL Server 2017 Graph Databases

Konklużjoni

SQL Server 2017 stabbilixxa ruħu bħala soluzzjoni intrapriża kompluta għal diversi kompiti kummerċjali tal-IT. L-ewwel verżjoni ta 'SQL Graph hija promettenti ħafna. Anke minkejja xi limitazzjonijiet, diġà hemm biżżejjed funzjonalità biex tesplora l-kapaċitajiet tal-graffs.

Il-funzjonalità tal-Graff SQL hija integrata bis-sħiħ fl-SQL Engine. Madankollu, kif diġà ntqal, SQL Server 2017 għandu l-limitazzjonijiet li ġejjin:

L-ebda appoġġ ta 'polimorfiżmu.

  • Konnessjonijiet unidirezzjonali biss huma appoġġjati.
  • It-truf ma jistgħux jaġġornaw il-kolonni $from_id u $to_id permezz ta' UPDATE.
  • L-għeluq transittiv mhumiex appoġġjati, iżda jistgħu jinkisbu bl-użu ta 'CTE.
  • L-appoġġ għall-oġġetti OLTP In-Memory huwa limitat.
  • Tabelli temporali (Tabella Temporali Verżjoni tas-Sistema), tabelli temporanji lokali u globali mhumiex appoġġjati.
  • Tipi ta' tabella u varjabbli ta' tabella ma jistgħux jiġu ddikjarati bħala NODE jew EDGE.
  • Mistoqsijiet bejn databases mhumiex appoġġjati.
  • M'hemm l-ebda mod dirett jew wizard biex tikkonverti tabelli regolari għal tabelli graffs.
  • M'hemm l-ebda GUI biex turi graffs, iżda tista 'tuża Power BI.

Introduzzjoni għal SQL Server 2017 Graph Databases

Aqra iktar:

Sors: www.habr.com

Żid kumment