Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

Cyn dechrau'r cwrs "Datblygwr Gweinydd MS SQL" Rydym wedi paratoi cyfieithiad defnyddiol arall i chi.

Mae cronfeydd data graff yn dechnoleg bwysig ar gyfer gweithwyr proffesiynol cronfeydd data. Rwy'n ceisio cadw i fyny â datblygiadau arloesol a thechnolegau newydd yn y maes hwn ac, ar ôl gweithio gyda chronfeydd data perthynol a NoSQL, rwy'n gweld rôl cronfeydd data graff yn dod yn fwyfwy pwysig. Wrth weithio gyda data hierarchaidd cymhleth, nid yn unig mae cronfeydd data traddodiadol yn aneffeithiol, ond hefyd NoSQL. Yn aml, wrth i nifer y lefelau cysylltiad a maint y gronfa ddata gynyddu, mae perfformiad yn lleihau. Ac wrth i'r perthnasoedd ddod yn fwy cymhleth, mae nifer yr YMUNO hefyd yn cynyddu.

Wrth gwrs, mae gan y model perthynol atebion ar gyfer gweithio gyda hierarchaethau (er enghraifft, defnyddio CTEs ailadroddus), ond mae'r rhain yn dal i fod yn atebion i'w datrys. Ar yr un pryd, mae ymarferoldeb cronfeydd data graff SQL Server yn caniatáu ichi drin lefelau lluosog o hierarchaeth yn hawdd. Mae'r model data ac ymholiadau yn cael eu symleiddio, ac felly mae eu heffeithlonrwydd yn cynyddu. Mae swm y cod yn cael ei leihau'n sylweddol.

Mae cronfeydd data graff yn iaith fynegiannol ar gyfer cynrychioli systemau cymhleth. Mae'r dechnoleg hon eisoes yn cael ei defnyddio'n eithaf eang yn y diwydiant TG mewn meysydd fel rhwydweithiau cymdeithasol, systemau gwrth-dwyll, dadansoddi rhwydwaith TG, argymhellion cymdeithasol, argymhellion cynnyrch a chynnwys.

Mae swyddogaeth cronfa ddata graff yn SQL Server yn addas ar gyfer senarios lle mae data'n gydgysylltiedig iawn ac mae ganddo berthnasoedd wedi'u diffinio'n dda.

Model data graff

Mae graff yn set o fertigau (nodau) ac ymylon (perthnasoedd, ymyl). Mae fertigau yn cynrychioli endidau, ac mae ymylon yn cynrychioli perthnasoedd y gall eu priodoleddau gynnwys gwybodaeth.

Mae cronfa ddata graff yn modelu endidau fel graff fel y'i diffinnir mewn theori graff. Mae strwythurau data yn fertigau ac ymylon. Priodweddau yw priodweddau fertigau ac ymylon. Cysylltiad yw cysylltiad fertigau.

Yn wahanol i fodelau data eraill, mae cronfeydd data graff yn blaenoriaethu perthnasoedd rhwng endidau. Felly, nid oes angen cyfrifo perthnasoedd gan ddefnyddio allweddi tramor neu unrhyw fodd arall. Mae'n bosibl creu modelau data cymhleth gan ddefnyddio tyniadau fertig ac ymyl yn unig.

Yn y byd modern, mae modelu perthnasoedd yn gofyn am dechnegau cynyddol gymhleth. Er mwyn modelu perthnasoedd, mae SQL Server 2017 yn cynnig galluoedd cronfa ddata graff. Cynrychiolir fertigau ac ymylon y graff fel mathau newydd o dablau: NOD ac YMYL. Mae ymholiadau graff yn defnyddio swyddogaeth T-SQL newydd o'r enw MATCH(). Gan fod y swyddogaeth hon wedi'i chynnwys yn SQL Server 2017, gellir ei ddefnyddio yn eich cronfeydd data presennol heb fod angen unrhyw drosi.

Manteision y model graff

Heddiw, mae busnesau a defnyddwyr yn mynnu cymwysiadau sy'n trin mwy a mwy o ddata, tra'n disgwyl perfformiad uchel a dibynadwyedd. Mae cynrychioli data fel graff yn cynnig ffordd gyfleus o drin perthnasoedd cymhleth. Mae'r dull hwn yn datrys llawer o broblemau ac yn helpu i gael canlyniadau o fewn cyd-destun penodol.

Mae'n edrych yn debyg y bydd llawer o gymwysiadau yn elwa o ddefnyddio cronfeydd data graff yn y dyfodol.

Modelu data: o fodel perthynol i fodel graff

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Enghraifft

Edrychwn ar enghraifft o strwythur sefydliadol gyda hierarchaeth o weithwyr: mae gweithiwr yn adrodd i reolwr, mae rheolwr yn adrodd i uwch reolwr, ac yn y blaen. Yn dibynnu ar y cwmni penodol, efallai y bydd unrhyw nifer o lefelau yn yr hierarchaeth hon. Ond wrth i nifer y lefelau gynyddu, mae cyfrifo perthnasoedd mewn cronfa ddata berthynol yn dod yn fwyfwy anodd. Mae'n eithaf anodd dychmygu hierarchaeth gweithwyr, hierarchaeth mewn marchnata neu gysylltiadau mewn rhwydweithiau cymdeithasol. Gadewch i ni weld sut y gall Graff SQL ddatrys y broblem o drin gwahanol lefelau o hierarchaeth.

Ar gyfer yr enghraifft hon byddwn yn gwneud model data syml. Gadewch i ni greu tabl o weithwyr EMP gyda ID EMPNO a cholofn Roedd M.G.R., gan nodi dynodwr goruchwyliwr (rheolwr) y cyflogai. Mae'r holl wybodaeth am yr hierarchaeth yn cael ei storio yn y tabl hwn a gellir ei holi gan ddefnyddio colofnau EMPNO и Roedd M.G.R..

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Mae'r diagram canlynol yn dangos yr un model strwythur trefniadol gyda phedair lefel o nythu ar ffurf fwy cyfarwydd. Mae gweithwyr yn fertigau graff o dabl EMP. Mae'r endid “gweithiwr” wedi'i gysylltu ag ef ei hun gan y cysylltiad “submits” (ReportsTo). Mewn termau graff, mae cyswllt yn ymyl (EDGE) sy'n cysylltu nodau (NODE) ​​o weithwyr.

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

Gadewch i ni greu tabl rheolaidd EMP ac ychwanegu'r gwerthoedd yno yn unol â'r diagram uchod.

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)

Mae'r llun isod yn dangos y gweithwyr:

  • gweithiwr gyda EMPNO 7369 yn ufuddhau i 7902;
  • gweithiwr gyda EMPNO 7902 yn ufuddhau i 7566
  • gweithiwr gyda EMPNO 7566 yn ufuddhau i 7839

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Nawr, gadewch i ni edrych ar gynrychiolaeth graff o'r un data. Mae gan fertig y CYFLOGE sawl priodoledd ac mae'r berthynas “is-weithwyr” (EmplReportsTo) yn gysylltiedig ag ef ei hun. EmplReportsTo yw enw'r berthynas.

Gall y tabl ymyl (EDGE) hefyd gynnwys priodoleddau.

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Gadewch i ni greu tabl nodau EmpNode

Mae'r gystrawen ar gyfer creu nod yn eithaf syml: i'r mynegiant CREU TABL yn cael ei ychwanegu at y diwedd "FEL NOD".

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

Nawr, gadewch i ni drosi'r data o dabl rheolaidd i dabl graff. Nesaf RHOWCH yn mewnosod data o dabl perthynol EMP.

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

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Yn y tabl o nodau mewn colofn arbennig $node_id_* mae'r dynodwr nod yn cael ei storio fel JSON. Mae'r colofnau sy'n weddill yn y tabl hwn yn cynnwys priodoleddau'r nod.

Creu ymylon (EDGE)

Mae creu tabl ymyl yn debyg iawn i greu tabl nodau, ac eithrio bod yr allweddair yn cael ei ddefnyddio "FEL YMYL".

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

Nawr, gadewch i ni ddiffinio cysylltiadau rhwng gweithwyr gan ddefnyddio colofnau EMPNO и Roedd M.G.R.. Mae'r diagram strwythur trefniadol yn dangos yn glir sut i ysgrifennu RHOWCH.

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

Mae'r tabl ymyl rhagosodedig yn cynnwys tair colofn. Yn gyntaf, $edge_id — dynodwr ymyl ar ffurf JSON. Y ddau arall ($from_id и $to_id) cynrychioli'r cysylltiad rhwng nodau. Yn ogystal, gall ymylon gael eiddo ychwanegol. Yn ein hachos ni y mae Deptno.

Golygfeydd System

Mewn golwg system sys.tables dwy golofn newydd wedi ymddangos:

  1. yn_ymyl
  2. yn_nod

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

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

ssms

Mae gwrthrychau sy'n gysylltiedig â graffiau wedi'u lleoli yn y ffolder Tablau Graff. Mae eicon y tabl nodau wedi'i farcio â dot, ac mae eicon y bwrdd ymyl wedi'i farcio â dau gylch cysylltiedig (yn debyg i sbectol).

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

MATCH mynegiant

Mynegiant MATCH a gymerwyd o CQL (Cypher Query Language). Mae hon yn ffordd effeithlon o gwestiynu priodweddau graff. Mae CQL yn dechrau gyda mynegiant MATCH.

cystrawen

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

Примеры

Gadewch i ni edrych ar ychydig o enghreifftiau.

Mae'r ymholiad isod yn dangos y gweithwyr y mae Smith a'i reolwr yn adrodd iddynt.

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'

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Mae'r ymholiad canlynol ar gyfer dod o hyd i weithwyr a rheolwyr ail lefel i Smith. Os byddwch yn dileu'r frawddeg LLE, yna bydd y canlyniad yn arddangos yr holl weithwyr.

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'

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Ac yn olaf, cais am weithwyr a rheolwyr trydydd lefel.

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'

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server
Nawr, gadewch i ni newid cyfeiriad i gael penaethiaid 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)

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

Casgliad

Mae SQL Server 2017 wedi sefydlu ei hun fel datrysiad menter cyflawn ar gyfer amrywiol dasgau busnes TG. Mae fersiwn gyntaf Graff SQL yn addawol iawn. Hyd yn oed er gwaethaf rhai cyfyngiadau, mae digon o ymarferoldeb eisoes i archwilio galluoedd graffiau.

Mae ymarferoldeb Graff SQL wedi'i integreiddio'n llawn i SQL Engine. Fodd bynnag, fel y nodwyd eisoes, mae gan SQL Server 2017 y cyfyngiadau canlynol:

Dim cefnogaeth polymorphism.

  • Dim ond cysylltiadau uncyfeiriad sy'n cael eu cefnogi.
  • Ni all Edges ddiweddaru colofnau $from_id a $to_id trwy UPDATE.
  • Ni chefnogir cau dros dro, ond gellir eu cael trwy ddefnyddio CTE.
  • Mae cefnogaeth ar gyfer gwrthrychau OLTP Mewn Cof yn gyfyngedig.
  • Ni chefnogir tablau dros dro (Tabl Amserol Versioned System), tablau lleol a byd-eang dros dro.
  • Ni ellir datgan mathau tabl a newidynnau tabl fel NODE neu EDGE.
  • Ni chefnogir ymholiadau traws-gronfa ddata.
  • Nid oes unrhyw ffordd uniongyrchol na dewin i drosi tablau rheolaidd i dablau graff.
  • Nid oes GUI i arddangos graffiau, ond gallwch ddefnyddio Power BI.

Cyflwyniad i Gronfeydd Data Graff 2017 SQL Server

Darllen mwy:

Ffynhonnell: hab.com

Ychwanegu sylw