Introductio ad SQL Servo 2017 Graph Databases

Ante initium cursus "MS SQL Servo Developer" Aliam interpretationem utilem paravimus tibi.

Graph databases technologiae magni momenti sunt pro professionalibus datorum. Conor novas ac novas technologias in hac provincia retinere et, cum relationibus et databases NoSQL laborantibus, munus graphiae databases magis magisque momenti esse video. Cum notitia hierarchica multiplex laborans, non solum databases traditionales inefficaces sunt, sed etiam NoSQL. Saepe, cum numerus nexuum gradus et magnitudo datorum augetur, effectus minuitur. Et quia relationes magis implicatae fiunt, numerus coniunctionum etiam augetur.

Utique, exemplar relationis solutiones habet ad operandum cum hierarchiis (exempli gratia utens recursiva CTEs), sed hae adhuc laborant. Eodem tempore functio datorum SQL Servo graphi datorum permittit vos ut multiplices hierarchiae gradus facile tractamus. Tum exemplar notitiae et quaestionis simpliciores sunt, ideoque earum efficientia augetur. Moles codicis signanter reducuntur.

Graph databases lingua expressiva sunt ad systemata multiplici repraesentandum. Haec technologia iam satis late in IT industria adhibita est in locis ut retiacula socialia, systemata anti-fraude, IT analysis retis, commendationes sociales, uber et contenta suasiones.

Munus datorum graphium in SQL Servo aptum est missionibus ubi notitia valde inter se coniungitur et relationes bene definitas habet.

Aliquam lacinia purus exemplar notitia

Aliquam lacinia purus est in vertices (nodorum) et oras (relationes, ora). Vertices entia repraesentant, margines relationes significant quarum attributa notitias continere possunt.

A graph database exempla entitates sicut graphum definitum in theoria graphi. Data structurae sunt vertices et orae. Vertices et orae proprietates sunt attributa. Connexio est connexio verticerum.

Dissimiles aliae notitiae exempla, relationes inter entitates datorum graphorum prioritize. Ideo relationes non oportet calculare utentes claves externas vel quovis alio modo. Fieri potest ut intricatae notitiae exempla creare solum vertex et ore abstractiones utentes.

In mundo huius temporis, exemplares relationes magis implicatae artes requirunt. Ad relationes exemplar, SQL Servo 2017 graphium datorum facultatum praebet. Vertices et margines graphi repraesentantur ut nova tabularum genera: NODE et ACIES. Aliquam lacinia purus queries utere novo functione T-SQL vocato COMPOSITUM(). Cum haec functionalitas aedificatur in SQL Servo 2017, in tuis databases existentibus nulla conversionis indigentia adhiberi potest.

Beneficia lacinia purus exemplum

Hodie, negotia et usores postulare applicationes magis ac magis notitias tractant, dum altam observantiam et constantiam exspectant. Repraesentans notitias sicut graphium praebet medium opportunum tractandi relationes implicatas. Aditus hic multas difficultates solvit et adiuvat ut eventus obtineant in aliquo contextu.

Apparet sicut multae applicationes ab usura graphe databases in futurum proderunt.

Data modeling: ex relatione ad graph exemplar

Introductio ad SQL Servo 2017 Graph Databases
exempli gratia

Inspiciamus exemplum normae structurae cum hierarchia operariorum: operarius tradit procuratori, procurator tradit procuratori seniori, et sic porro. Prout specifica societas, in hac hierarchia quilibet gradus exsistere potest. Sed cum numerus graduum augetur, relationes computantes in datorum relationum relatione magis magisque implicantur. Difficillimum est opinari Hierarchiam operariorum, Hierarchiam in mercatu vel nexus in retis socialibus. Videamus quomodo SQL Graph quaestionem solvere possit de diversis gradibus hierarchiae tractandi.

Ad hoc exemplum simplex notitia exemplaris faciemus. Faciamus mensam conductos EMP cum ID * EMPNO et columna M.G.R.ostendens identifier supervisoris molestie (procurator). Omnes informationes de hierarchia in hac tabula repositae sunt et per columnas queri possunt EMPNO ΠΈ M.G.R..

Introductio ad SQL Servo 2017 Graph Databases
Sequens schema ostendit eandem normae structurae exemplar cum quattuor gradibus nidificandi in forma familiariore. Employees sunt vertices lacinia purus a mensa EMP. Entitas "employee" sibi per nexum "submittit" (ReportsTo). In graphis terminis nexus est extremitas (ORA) quae nodi (nodorum) coniungitur.

Introductio ad SQL Servo 2017 Graph Databases

Faciamus iusto mensam EMP et bona ibi addas ad normam schematis supra.

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)

Imago infra ostendit conductos operarios:

  • employee cum EMPNO 7369 obtemperat 7902;
  • employee cum EMPNO 7902 obedit 7566
  • employee cum EMPNO 7566 obedit 7839

Introductio ad SQL Servo 2017 Graph Databases
Nunc inspiciamus eiusdem datae figurae repraesentationem. EMPLOYEE vertex plura attributa habet et per relationem "subordinatorum" sibi iungitur (EmplReportsTo). EmplReportsTo nomen relationis est.

In margine tabellae (PRAESIS) etiam attributa continent.

Introductio ad SQL Servo 2017 Graph Databases
Faciamus nodi mensam EmpNode

Syntaxis ad nodi creandum satis simplex est: ad expressionem TABLE additur ad finem "IN NODUM".

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

Nunc notitias e mensa regulari ad graphium convertamus. deinde INDO adiicit notitia ex relatione in mensa EMP.

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

Introductio ad SQL Servo 2017 Graph Databases
In tabella nodis in columna speciali $node_id_* nodo identifier conditur ut JSON. Reliquae columnae huius tabulae attributa nodi continent.

Partum oras (ORA)

Mensam marginem creando simillimum est ad mensam nodi creandam, excepto quod keyword adhibetur "Quasi ACIES".

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Introductio ad SQL Servo 2017 Graph Databases

Nunc definiamus nexus inter operarios per columnas EMPNO ΠΈ M.G.R.. In structuram normae figurae clare ostendit quomodo scribere INDO.

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

Tabula ora default constat ex tribus columnis. Primis, $edge_id β€” ora identifier in forma JSON. Reliqua duo ($from_id ΠΈ $to_id) nexum nodis repraesentant. Praeterea margines adiectis proprietatibus habere possunt. In nobis est Deptno.

Ratio Views

In sententia ratio sys.tables duae columnae novae apparuerunt;

  1. is_edge
  2. is_node

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

Introductio ad SQL Servo 2017 Graph Databases

ssms

Ea quae ad graphes pertinent, in graph Tabularum folder sita sunt. Icon tabula nodi punctorio insignitur, et icon in margine tabulae duobus circulis connexis (aliquantulum vitrearum instar).

Introductio ad SQL Servo 2017 Graph Databases

IUGUM expressio

expressio PAR ex CQL (Cypher Query Language). Haec via efficax est ad proprietates graphiae quaesindas. CQL incipit cum expressione PAR.

Syntax

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

exempla

Intueamur pauca exempla.

Investigatio infra demonstrat operarios ad quos Smith et procurator eius referunt.

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'

Introductio ad SQL Servo 2017 Graph Databases
Sequens quaesitum est de inveniendo secundo gradu conductos operarios et procuratores Smith. Si damnationem removes UBItum id omne conductos ostendet.

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'

Introductio ad SQL Servo 2017 Graph Databases
Denique petitio pro tertio gradu operariorum et curatorum.

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'

Introductio ad SQL Servo 2017 Graph Databases
Nunc directionem mutemus, ut bullas Smithi acquiramus.

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)

Introductio ad SQL Servo 2017 Graph Databases

conclusio,

SQL Server 2017 solutionem inceptis completam constituit pro variis IT negotiorum negotiis. Prima versio SQL Graph valde promittit. Etiam, non obstantibus aliquibus limitationibus, iam satis est functionality ad explorandas graphorum facultates.

SQL Graph functionality in SQL Engine plene integratur. Nihilominus, ut iam dictum est, SQL Servo 2017 sequentes limitationes habet:

Nulla polymorphismus lorem.

  • Solum nexus unidirectionales sustentantur.
  • Marginae non possunt renovare $from_id et $ad columnas per UPDATE.
  • Commissuras transitivas non praebent, sed uti CTE obtineri possunt.
  • Support pro In-Memoria OLTP obiecta limitatur.
  • Mensae temporales (System-versioned Tabella temporalis), tabulae temporales locales et globales non sustinentur.
  • Mensa figurarum et mensarum variabilium sicut NODE vel ACIES declarari non potest.
  • Crux-database queries non praebentur.
  • Non est via directa vel magus ad mensas regulares ad tabulas graphias convertendas.
  • GUI non est ut graphes exhibeas, sed Power BI uti potes.

Introductio ad SQL Servo 2017 Graph Databases

Lege plus:

Source: www.habr.com