Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

Roimh thús an chúrsa "Forbróir Freastalaí MS SQL" Tá aistriúchán úsáideach eile ullmhaithe againn duit.

Is teicneolaíocht thábhachtach iad bunachair ghraif do ghairmithe bunachar sonraí. Déanaim iarracht coinneáil suas le nuálaíochtaí agus teicneolaíochtaí nua sa réimse seo agus, tar éis oibriú le bunachair shonraí choibhneasta agus NoSQL, feicim ról na mbunachair shonraí graf ag éirí níos tábhachtaí. Agus tú ag obair le sonraí ordlathacha casta, ní hamháin go bhfuil bunachair shonraí traidisiúnta neamhéifeachtach, ach freisin NoSQL. Go minic, de réir mar a mhéadaíonn líon na leibhéil nasc agus méid an bhunachair shonraí, laghdaítear feidhmíocht. Agus de réir mar a éiríonn an chaidrimh níos casta, méadaíonn líon na gCUNTAS freisin.

Ar ndóigh, tá réitigh ag an tsamhail choibhneasta maidir le hoibriú le hordlathais (mar shampla, úsáid a bhaint as CTEanna athfhillteacha), ach is réitigh iad seo fós. Ag an am céanna, ceadaíonn feidhmiúlacht bhunachair shonraí ghraf SQL Server duit leibhéil iolracha ordlathais a láimhseáil go héasca. Déantar an tsamhail sonraí agus na ceisteanna a shimpliú, agus mar sin méadaítear a n-éifeachtúlacht. Laghdaítear méid an chóid go suntasach.

Is teanga léiritheach iad bunachair ghraif chun córais chasta a léiriú. Tá an teicneolaíocht seo in úsáid go forleathan cheana féin sa tionscal TF i réimsí mar líonraí sóisialta, córais frith-chalaoise, anailís líonra TF, moltaí sóisialta, moltaí táirge agus ábhar.

Tá feidhmiúlacht an bhunachair shonraí ghraif i Freastalaí SQL oiriúnach do chásanna ina bhfuil sonraí idirnasctha go mór agus ina bhfuil caidreamh dea-shainithe.

Samhail Sonraí Graf

Is éard is graf ann ná sraith rinn (nóid) agus imill (gaolta, ciumhais). Is ionann rinn agus aonáin, agus seasann imill na gaolmhaireachtaí a bhféadfadh faisnéis a bheith ina gcuid tréithe.

Múnlaíonn bunachar sonraí graf aonáin mar ghraf mar atá sainmhínithe i dteoiric ghraif. Is éard atá i struchtúir sonraí ná rinn agus imill. Is éard is tréithe ann airíonna na rinn agus na n-imill. Is éard is nasc ann ná nasc rinn.

Murab ionann agus samhlacha sonraí eile, tugann bunachair ghraif tús áite do chaidrimh idir eintitis. Dá bhrí sin, ní gá caidrimh a ríomh ag baint úsáide as eochracha eachtracha nó aon mhodhanna eile. Is féidir samhlacha casta sonraí a chruthú ag baint úsáide as astarraingtí rinn agus imeall amháin.

Sa domhan nua-aimseartha, éilíonn caidrimh shamhaltú teicnící atá ag éirí níos casta. Chun caidrimh a shamhaltú, cuireann SQL Server 2017 cumais bhunachar sonraí graif ar fáil. Léirítear rinn agus imill an ghraif mar chineálacha nua táblaí: NODE agus EDGE. Úsáideann ceisteanna grafa feidhm T-SQL nua ar a dtugtar MATCH(). Ós rud é go bhfuil an fheidhmiúlacht seo ionsuite i SQL Server 2017, is féidir é a úsáid i do bhunachair shonraí atá ann cheana féin gan gá le haon chomhshó.

Buntáistí an mhúnla graf

Sa lá atá inniu ann, éilíonn gnólachtaí agus úsáideoirí iarratais a láimhseálann sonraí níos mó agus níos mó, agus iad ag súil le hardfheidhmíocht agus iontaofacht. Is bealach áisiúil é sonraí a léiriú mar ghraf chun caidrimh chasta a láimhseáil. Réitíonn an cur chuige seo go leor fadhbanna agus cabhraíonn sé le torthaí a fháil laistigh de chomhthéacs ar leith.

Is cosúil go mbainfidh go leor feidhmchlár leas as bunachair shonraí ghraf a úsáid sa todhchaí.

Samhaltú sonraí: ó mhúnla choibhneasta go graf

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Sampla

Breathnaímid ar shampla de struchtúr eagraíochtúil le hordlathas fostaithe: tuairiscíonn fostaí do bhainisteoir, tuairiscíonn bainisteoir chuig bainisteoir sinsearach, agus mar sin de. Ag brath ar an gcuideachta shonrach, d'fhéadfadh go mbeadh líon ar bith leibhéil san ordlathas seo. Ach de réir mar a mhéadaíonn líon na leibhéal, bíonn sé níos deacra caidreamh a ríomh i mbunachar sonraí coibhneasta. Tá sé deacair go leor ordlathas na bhfostaithe, ordlathas i margaíocht nó naisc i líonraí sóisialta a shamhlú. A ligean ar a fheiceáil conas is féidir SQL Graf an fhadhb a láimhseáil leibhéil éagsúla ordlathais a réiteach.

Mar shampla seo déanfaimid samhail sonraí simplí. Déanaimis tábla fostaithe a chruthú EMP le ID EMPNO agus colún M.G.R., a léiríonn aitheantóir maoirseoir (bainisteoir) an fhostaí. Stóráiltear gach eolas faoin ordlathas sa tábla seo agus is féidir é a cheistiú trí úsáid a bhaint as colúin EMPNO и M.G.R..

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Taispeánann an léaráid seo a leanas an tsamhail struchtúir eagraíochtúil chéanna le ceithre leibhéal neadaithe i bhfoirm níos coitianta. Is éard atá i bhfostaithe ná rinn graf ó tábla EMP. Tá an “fostaí” aonán ceangailte leis féin tríd an gceangal “Cuireann” (ReportsTo). I dtéarmaí graif, is éard atá i nasc ná imeall (EDGE) a nascann nóid (NODE) ​​fostaithe.

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

A ligean ar a chruthú tábla rialta EMP agus cuir na luachanna ann de réir na léaráide thuas.

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)

Taispeánann an pictiúr thíos na fostaithe:

  • fostaí le EMPNO géilleann 7369 do 7902;
  • fostaí le EMPNO Cloíonn 7902 le 7566
  • fostaí le EMPNO Cloíonn 7566 le 7839

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Anois, déanaimis féachaint ar léiriú graf de na sonraí céanna. Tá roinnt tréithe ag rinn an FOSTAITHE agus tá sé ceangailte leis féin ag an ngaol “subordinates” (EmplReportsTo). EmplReportsTo is ainm don ghaol.

Féadfaidh tréithe a bheith sa tábla imill (EDGE).

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Déanaimis tábla nód EmpNode a chruthú

Tá an chomhréir chun nód a chruthú simplí go leor: leis an slonn AN TÁBLA A CHRUTHÚ chuirtear go dtí an deireadh "MAR NÓD".

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

Anois déanaimis na sonraí a thiontú ó tábla rialta go tábla graf. Ar aghaidh IONSÁIGH cuireann sé isteach sonraí ó tábla coibhneasta EMP.

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

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Sa tábla de nóid i gcolún speisialta $node_id_* Stóráiltear an t-aitheantóir nód mar JSON. Tá tréithe an nóid sna colúin atá fágtha den tábla seo.

Imill á gcruthú (EDGE)

Tá cruthú tábla imeall an-chosúil le tábla nód a chruthú, ach amháin go n-úsáidtear an eochairfhocal "MAR CINN".

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

Anois, déanaimis naisc a shainiú idir fostaithe ag baint úsáide as colúin EMPNO и M.G.R.. Taispeánann an léaráid struchtúr eagraíochtúil go soiléir conas scríobh IONSÁIGH.

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

Tá trí cholún sa tábla imeall réamhshocraithe. Ar dtús, $edge_id — aitheantóir imeall i bhfoirm JSON. an bheirt eile ($from_id и $to_id) an nasc idir nóid a léiriú. Ina theannta sin, is féidir airíonna breise a bheith ag imill. Is é ár gcás go bhfuil sé Roinn.

Amhairc Chórais

I radharc an chórais sys.tables tá dhá cholún nua le feiceáil:

  1. is_imeall
  2. is_nód

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

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

SMS

Tá rudaí a bhaineann le graif suite i bhfillteán na dTáblaí Grafa. Tá an deilbhín tábla nód marcáilte le ponc, agus tá an deilbhín tábla imeall marcáilte le dhá chiorcal nasctha (beagán cosúil le spéaclaí).

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

MATCH abairt

Léiriú CHLEAMHNAS tógtha ó CQL (Cypher Query Language). Is bealach éifeachtach é seo chun airíonna graf a fhiosrú. Tosaíonn CQL le slonn CHLEAMHNAS.

error

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

Примеры

Breathnaímid ar roinnt samplaí.

Léiríonn an cheist thíos na fostaithe a dtugann Smith agus a bhainisteoir tuairisc dóibh.

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'

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Baineann an cheist seo a leanas le fostaithe agus bainisteoirí dara leibhéal a aimsiú do Smith. Má bhaineann tú an abairt ÁIT, ansin taispeánfaidh an toradh gach fostaí.

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'

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Agus ar deireadh, iarratas ar fhostaithe agus ar bhainisteoirí tríú leibhéal.

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'

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017
Anois déanaimis treo a athrú chun ceannairí Smith a fháil.

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)

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

Conclúid

Bhunaigh SQL Server 2017 é féin mar réiteach iomlán fiontraíochta le haghaidh tascanna gnó TF éagsúla. Tá an chéad leagan de SQL Graph an-geallta. Fiú in ainneoin roinnt teorainneacha, tá go leor feidhmiúlachta ann cheana féin chun cumais ghraif a iniúchadh.

Tá feidhmiúlacht Graf SQL comhtháite go hiomlán in Inneall SQL. Mar sin féin, mar a dúradh cheana, tá na teorainneacha seo a leanas ag SQL Server 2017:

Gan tacaíocht polymorphism.

  • Ní thacaítear ach le naisc aontreocha.
  • Ní féidir le Edges na colúin $from_id agus $to_id a nuashonrú trí UPDATE.
  • Ní thacaítear le dúnadh trasdultach, ach is féidir iad a fháil trí úsáid a bhaint as CTE.
  • Tá an tacaíocht do réada OLTP In-Memory teoranta.
  • Ní thacaítear le táblaí ama (Tábla ama Leagan Córais), táblaí sealadacha áitiúla agus domhanda.
  • Ní féidir cineálacha táblaí agus athróga tábla a dhearbhú mar NODE nó EDGE.
  • Ní thacaítear le fiosruithe trasbhunachar sonraí.
  • Níl aon bhealach díreach nó draoi chun táblaí rialta a thiontú go táblaí graf.
  • Níl aon GUI ann chun graif a thaispeáint, ach is féidir leat Power BI a úsáid.

Réamhrá ar Bhunachair Shonraí Graf SQL Server 2017

Leigh Nios mo:

Foinse: will.com

Add a comment