SQL Server 2017 график мэдээллийн сангийн танилцуулга

Хичээл эхлэхээс өмнө "MS SQL сервер хөгжүүлэгч" Бид танд өөр нэг хэрэгтэй орчуулгыг бэлдлээ.

График мэдээллийн сан нь мэдээллийн сангийн мэргэжилтнүүдийн хувьд чухал технологи юм. Би энэ чиглэлийн инноваци, шинэ технологийг дагаж мөрдөхийг хичээж, харилцааны болон NoSQL мэдээллийн сантай ажилласны дараа график мэдээллийн сангийн үүрэг улам бүр нэмэгдэж байгааг харж байна. Нарийн төвөгтэй шаталсан өгөгдөлтэй ажиллахдаа уламжлалт мэдээллийн сан төдийгүй NoSQL ч үр дүнгүй байдаг. Ихэнхдээ холбоосын түвшний тоо, мэдээллийн сангийн хэмжээ ихсэх тусам гүйцэтгэл буурч байна. Мөн харилцаа улам төвөгтэй болохын хэрээр НЭГДСЭН хүмүүсийн тоо нэмэгддэг.

Мэдээжийн хэрэг, харилцааны загварт шатлалтай ажиллах шийдлүүд байдаг (жишээлбэл, рекурсив CTE ашиглах), гэхдээ эдгээр нь тойрон гарах арга зам хэвээр байна. Үүний зэрэгцээ SQL Server график мэдээллийн сангийн функциональ байдал нь шатлалын олон түвшнийг зохицуулахад хялбар болгодог. Өгөгдлийн загвар болон асуулга хоёулаа хялбаршуулсан тул үр ашиг нь нэмэгддэг. Кодын хэмжээг мэдэгдэхүйц бууруулдаг.

График мэдээллийн сан нь нарийн төвөгтэй системийг илэрхийлэх илэрхийлэлтэй хэл юм. Энэхүү технологи нь мэдээллийн технологийн салбарт нийгмийн сүлжээ, залилангийн эсрэг систем, мэдээллийн технологийн сүлжээний шинжилгээ, нийгмийн зөвлөмж, бүтээгдэхүүн, агуулгын зөвлөмж зэрэг салбарт аль хэдийн нэлээд өргөн хэрэглэгдэж байна.

SQL Server дээрх график мэдээллийн сангийн функц нь өгөгдөл нь хоорондоо маш сайн холбоотой, сайн тодорхойлсон харилцаатай хувилбаруудад тохиромжтой.

График өгөгдлийн загвар

График нь орой (зангилаа, зангилаа) ба ирмэгүүд (харилцаа, ирмэг) багц юм. Орой нь объектуудыг, ирмэг нь шинж чанар нь мэдээлэл агуулж болох холбоосыг илэрхийлдэг.

График мэдээллийн сан нь графын онолд тодорхойлсноор объектуудыг график хэлбэрээр загварчилдаг. Өгөгдлийн бүтэц нь орой ба ирмэгүүд юм. Аттрибутууд нь орой ба ирмэгүүдийн шинж чанарууд юм. Холболт нь оройн холболт юм.

Бусад өгөгдлийн загваруудаас ялгаатай нь график мэдээллийн сан нь аж ахуйн нэгж хоорондын харилцааг чухалчилдаг. Тиймээс гадаад түлхүүр эсвэл өөр аргаар харилцааг тооцоолох шаардлагагүй болно. Зөвхөн орой ба ирмэгийн хийсвэрлэлийг ашиглан нарийн төвөгтэй өгөгдлийн загварыг бий болгох боломжтой.

Орчин үеийн ертөнцөд харилцааг загварчлах нь улам боловсронгуй арга техникийг шаарддаг. Харилцааг загварчлахын тулд SQL Server 2017 нь график мэдээллийн сангийн боломжийг санал болгодог. Графикийн орой ба ирмэгүүд нь шинэ төрлийн хүснэгтүүдээр дүрслэгдсэн: NODE ба EDGE. График асуулгад MATCH() хэмээх шинэ T-SQL функцийг ашигладаг. Энэ функц нь SQL Server 2017-д суурилагдсан тул өгөгдлийн сангийн хөрвүүлэлт хийх шаардлагагүйгээр одоо байгаа мэдээллийн сандаа ашиглах боломжтой.

График загварын ашиг тус

Өнөө үед бизнес эрхлэгчид болон хэрэглэгчид өндөр гүйцэтгэл, найдвартай байдлыг хүлээж байгаа хэдий ч илүү олон өгөгдөлтэй ажиллах програмуудыг шаарддаг. Өгөгдлийн график дүрслэл нь нарийн төвөгтэй харилцааг зохицуулах тохиромжтой хэрэгслийг санал болгодог. Энэ арга нь олон асуудлыг шийдэж, тухайн нөхцөл байдалд үр дүнд хүрэхэд тусалдаг.

Ирээдүйд олон программууд график мэдээллийн сангаас ашиг тус хүртэх бололтой.

Өгөгдлийн загварчлал: Харьцангуйгаас график загварчлал хүртэл

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Жишээ нь:

Ажилчдын шатлал бүхий байгууллагын бүтцийн жишээг авч үзье: ажилтан нь менежерт тайлагнадаг, менежер нь ахлах менежерт тайлагнадаг гэх мэт. Тодорхой компаниас хамааран энэ шатлалын хэд хэдэн түвшин байж болно. Гэвч түвшний тоо нэмэгдэхийн хэрээр харилцааны мэдээллийн сан дахь харилцааг тооцоолох нь улам бүр хэцүү болж байна. Ажилчдын шатлал, маркетинг эсвэл нийгмийн сүлжээн дэх шатлалыг төсөөлөхөд хэцүү байдаг. SQL график нь шатлалын янз бүрийн түвшний асуудлыг хэрхэн шийдэж болохыг харцгаая.

Энэ жишээний хувьд энгийн өгөгдлийн загвар хийцгээе. Ажилчдын хүснэгтийг үүсгэ БОМТ ID-тай EMPNO ба багана M.G.R.Ажилтны дарга (менежер)-ийн үнэмлэхийг заадаг A. Шатлалын талаарх бүх мэдээллийг энэ хүснэгтэд хадгалсан бөгөөд багана ашиглан асууж болно EMPNO и M.G.R..

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Дараах диаграмм нь дөрвөн түвшний үүрлэсэн ижил байгууллагын диаграммын загварыг илүү танил хэлбэрээр харуулж байна. Ажилтнууд нь хүснэгтээс авсан графикийн оройнууд юм БОМТ. Аж ахуйн нэгж "ажилтан" нь "илгээдэг" (ReportsTo) харилцаагаар өөртэйгөө холбогддог. Графикийн хувьд холбоос нь ажилчдын зангилаа (NODE) ​​холбодог ирмэг (EDGE) юм.

SQL Server 2017 график мэдээллийн сангийн танилцуулга

Ердийн хүснэгтийг үүсгэцгээе БОМТ мөн дээрх диаграмын дагуу утгыг нэмнэ үү.

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)

Доорх зурагт ажилчдыг харуулав.

  • хамт ажилтан EMPNO 7369 нь 7902-д захирагддаг;
  • хамт ажилтан EMPNO 7902 нь 7566-д захирагддаг
  • хамт ажилтан EMPNO 7566 нь 7839-д захирагддаг

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Одоо ижил өгөгдлийн дүрслэлийг график хэлбэрээр авч үзье. АЖИЛТНЫ зангилаа нь хэд хэдэн шинж чанартай бөгөөд өөртэй нь "илгээх" (EmplReportsTo) хамаарлаар холбогддог. EmplReportsTo нь харилцааны нэр юм.

Захын хүснэгт (EDGE) нь мөн шинж чанартай байж болно.

SQL Server 2017 график мэдээллийн сангийн танилцуулга
EmpNode зангилааны хүснэгт үүсгэх

Зангилаа үүсгэх синтакс нь маш энгийн: илэрхийлэлд ҮНДСЭН ҮЙЛДВЭР төгсгөлд нь нэмсэн ЗАНГИЛАЛ БОЛГОН.

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

Одоо ердийн хүснэгтээс өгөгдлийг график болгон хөрвүүлье. Дараачийн INSERT хамаарлын хүснэгтээс өгөгдөл оруулна БОМТ.

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

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Зангилааны хүснэгтэд тусгай баганад $node_id_* хост ID нь JSON хэлбэрээр хадгалагдана. Энэ хүснэгтийн үлдсэн баганууд нь зангилааны шинж чанаруудыг агуулна.

Ирмэг үүсгэх (EDGE)

Түлхүүр үгээс бусад тохиолдолд захын хүснэгт үүсгэх нь зангилааны хүснэгт үүсгэхтэй маш төстэй юм AS EDGE.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

SQL Server 2017 график мэдээллийн сангийн танилцуулга

Одоо багана ашиглан ажилчдын хоорондын харилцааг тодорхойлъё EMPNO и M.G.R.. Байгууллагын диаграм нь хэрхэн бичихийг тодорхой харуулж байна INSERT.

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

Ирмэгийн хүснэгт нь анхдагчаар гурван баганатай. Эхлээд, $edge_id — JSON хэлбэрийн ирмэг танигч. Нөгөө хоёр ($from_id и $to_id) зангилаа хоорондын хамаарлыг илэрхийлнэ. Үүнээс гадна ирмэг нь нэмэлт шинж чанартай байж болно. Манай тохиолдолд энэ Дептно.

Системийн харагдац

Системийн харагдац дээр sys.tables Хоёр шинэ багана байна:

  1. ирмэг
  2. зангилаа

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

SQL Server 2017 график мэдээллийн сангийн танилцуулга

ssms

Графиктай холбоотой объектууд нь График Хүснэгтүүд хавтсанд байрладаг. Зангилааны хүснэгтийн дүрсийг цэгээр, ирмэгийн хүснэгтийн дүрсийг холбосон хоёр тойргоор тэмдэглэсэн (энэ нь нүдний шил шиг харагддаг).

SQL Server 2017 график мэдээллийн сангийн танилцуулга

MATCH илэрхийлэл

Үг хэлэх MATCH CQL (Cypher Query Language) -ээс авсан. Энэ нь графикийн шинж чанарыг хайх үр дүнтэй арга юм. CQL хэллэгээр эхэлдэг MATCH.

синтакс

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

жишээ

Хэд хэдэн жишээг харцгаая.

Доорх асуулга нь Смит болон түүний менежерт тайлагнадаг ажилчдыг харуулна.

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'

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Дараах асуулт нь Смитийн ажилчид болон хоёрдугаар түвшний менежерүүдийг хайж олоход зориулагдсан болно. Хэрэв та саналыг хасвал WHERE, дараа нь үр дүнд нь бүх ажилчид харагдах болно.

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'

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Эцэст нь гурав дахь түвшний ажилтан, менежерүүдэд зориулсан хүсэлт.

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'

SQL Server 2017 график мэдээллийн сангийн танилцуулга
Одоо Смитийн дарга нарыг авахын тулд чиглэлээ өөрчилье.

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)

SQL Server 2017 график мэдээллийн сангийн танилцуулга

дүгнэлт

SQL Server 2017 нь бизнесийн мэдээллийн технологийн төрөл бүрийн хэрэгцээг хангах цогц шийдэл болж чадсан. SQL Graph-ийн анхны хувилбар нь маш ирээдүйтэй юм. Хэдийгээр зарим хязгаарлалттай байсан ч графикийн боломжуудыг судлах хангалттай функцууд аль хэдийн бий болсон.

SQL Graph функц нь SQL Engine-д бүрэн нэгдсэн. Гэхдээ аль хэдийн дурьдсанчлан SQL Server 2017 нь дараахь хязгаарлалттай байдаг.

Полиморфизмыг дэмждэггүй.

  • Зөвхөн нэг чиглэлтэй холбоосыг дэмждэг.
  • Ирмэгүүд $from_id болон $to_id багануудыг UPDATE-р шинэчлэх боломжгүй.
  • Шилжилтийн хаалтыг дэмждэггүй ч CTE-г ашиглан олж авах боломжтой.
  • In-Memory OLTP объектуудад зориулсан хязгаарлагдмал дэмжлэг.
  • Түр зуурын хүснэгтүүд (Системийн Хувилбартай Түр Хүснэгт), түр зуурын орон нутгийн болон глобал хүснэгтийг дэмждэггүй.
  • Хүснэгтийн төрлүүд болон хүснэгтийн хувьсагчдыг NODE эсвэл EDGE гэж зарлах боломжгүй.
  • Өгөгдлийн сан хоорондын асуулга дэмждэггүй.
  • Ердийн хүснэгтийг график хүснэгт болгон хувиргах шууд арга эсвэл ямар нэгэн шидтэн (шидтэн) байхгүй.
  • График харуулах GUI байхгүй ч Power BI ашиглаж болно.

SQL Server 2017 график мэдээллийн сангийн танилцуулга

Цааш унших:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх