Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017

Пеш аз оғози курс "Таҳиягари MS SQL Server" Мо барои шумо боз як тарҷумаи муфид омода кардем.

Пойгоҳи додаҳои графикӣ як технологияи муҳим барои мутахассисони пойгоҳи додаҳо мебошад. Ман кӯшиш мекунам, ки навовариҳо ва технологияҳои навро дар ин самт пайгирӣ кунам ва пас аз кор кардан бо базаҳои релятсионӣ ва NoSQL, мебинам, ки нақши пойгоҳи додаҳои графикӣ торафт бештар мегардад. Ҳангоми кор бо маълумоти мураккаби иерархӣ на танҳо базаҳои анъанавӣ, балки NoSQL низ бесамаранд. Аксар вақт, бо афзоиши шумораи сатҳҳои истинод ва андозаи базаи маълумот, коҳиши кор ба мушоҳида мерасад. Ва баробари мураккаб шудани муносибатҳо, шумораи JOINҳо низ меафзояд.

Албатта, дар модели реляционӣ роҳҳои ҳалли кор бо иерархияҳо мавҷуданд (масалан, бо истифода аз CTE-ҳои рекурсивӣ), аммо инҳо ҳанӯз ҳам роҳҳои ҳалкунанда мебошанд. Ҳамзамон, функсияҳои пойгоҳи додаҳои графикии SQL Server идора кардани сатҳҳои зинанизомиро осон мекунад. Ҳам модели додаҳо ва ҳам дархостҳо содда карда шудаанд ва аз ин рӯ, самаранокии онҳо зиёд мешавад. Миқдори кодро ба таври назаррас коҳиш медиҳад.

Пойгоҳи додаҳои графикӣ забони экспрессивӣ барои муаррифии системаҳои мураккаб мебошанд. Ин технология аллакай дар соҳаи технологияҳои иттилоотӣ дар чунин соҳаҳо ба мисли шабакаҳои иҷтимоӣ, системаҳои зидди қаллобӣ, таҳлили шабакаҳои IT, тавсияҳои иҷтимоӣ, тавсияҳои маҳсулот ва мундариҷа истифода мешавад.

Функсияи пойгоҳи додаҳои графикӣ дар SQL Server барои сенарияҳое мувофиқ аст, ки маълумот бо ҳам алоқаманд аст ва муносибатҳои хуб муайяншуда дорад.

Модели маълумотҳои графикӣ

Графика маҷмӯи қуллаҳо (гиреҳҳо, гиреҳҳо) ва кунҷҳо (муносибатҳо, канорҳо) мебошад. Вертикҳо объектҳоро намояндагӣ мекунанд ва кунҷҳо истинодҳоеро нишон медиҳанд, ки атрибутҳояшон метавонанд маълумот дошта бошанд.

Махзани маълумотҳои графикӣ объектҳоро ҳамчун графике, ки дар назарияи график муайян шудааст, модел мекунад. Сохторҳои додаҳо қуллаҳо ва кунҷҳо мебошанд. Аттрибутҳо хосиятҳои қуллаҳо ва кунҷҳо мебошанд. Пайвастшавӣ пайванди қуллаҳо мебошад.

Баръакси дигар моделҳои додаҳо, пойгоҳи додаҳои графикӣ ба муносибатҳои байни объектҳо афзалият медиҳанд. Аз ин рӯ, бо истифода аз калидҳои хориҷӣ ё бо роҳи дигар ҳисоб кардани муносибатҳо лозим нест. Бо истифода аз абстраксияҳои вертекс ва канори моделҳои мураккаби додаҳо имконпазир аст.

Дар ҷаҳони муосир моделсозии муносибатҳо усулҳои бештар ва мураккабтарро талаб мекунад. Барои моделсозии муносибатҳо, SQL Server 2017 имкониятҳои пойгоҳи додаҳои графикиро пешниҳод мекунад. Қуллаҳо ва кунҷҳои график ҳамчун намуди нави ҷадвалҳо ифода карда мешаванд: NODE ва EDGE. Дархостҳои графикӣ функсияи нави T-SQL-ро бо номи MATCH() истифода мебаранд. Азбаски ин функсия дар SQL Server 2017 сохта шудааст, он метавонад дар пойгоҳи додаҳои мавҷудаи шумо бидуни ниёз ба табдили пойгоҳи додаҳо истифода шавад.

Манфиатҳои модели графикӣ

Имрӯзҳо, корхонаҳо ва корбарон барномаҳоеро талаб мекунанд, ки бо маълумоти бештар ва бештар кор мекунанд, дар ҳоле ки интизории иҷроиш ва эътимоднокии баланд доранд. Намоиши графикии додаҳо воситаи қулайро барои коркарди муносибатҳои мураккаб пешкаш мекунад. Ин равиш бисёр мушкилотро ҳал мекунад ва барои ба даст овардани натиҷаҳо дар заминаи додашуда кӯмак мекунад.

Чунин ба назар мерасад, ки бисёр барномаҳо дар оянда аз пойгоҳи додаҳои графикӣ баҳра хоҳанд бурд.

Моделсозии маълумот: Аз релятсионӣ ба моделсозии графикӣ

Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017
Мисол

Биёед мисоли сохтори ташкилиро бо иерархияи кормандон дида бароем: корманд ба менеҷер, менеҷер ба менеҷери калон ҳисобот медиҳад ва ғайра. Вобаста аз ширкати мушаххас, дар ин иерархия шумораи ҳар гуна сатҳҳо мавҷуданд. Аммо бо зиёд шудани шумораи сатҳҳо, ҳисоб кардани муносибатҳо дар пойгоҳи додаҳои релятсионӣ бештар ва мушкилтар мегардад. Тасаввур кардани иерархияи кормандон, иерархия дар маркетинг ё робитаҳои васоити ахбори иҷтимоӣ хеле душвор аст. Биёед бубинем, ки чӣ тавр SQL Graph метавонад масъалаи коркарди сатҳҳои гуногуни иерархияро ҳал кунад.

Барои ин мисол, биёед модели оддии маълумотро созем. Ҷадвали кормандонро эҷод кунед НИМЗ бо ID EMPNO ва сутун М.Г.Р.A, ки ба шахсияти роҳбари (роҳбари) корманд ишора мекунад. Ҳама маълумот дар бораи иерархия дар ин ҷадвал нигоҳ дошта мешавад ва онҳоро бо истифода аз сутунҳо дархост кардан мумкин аст EMPNO и М.Г.Р..

Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017
Диаграммаи зерин инчунин як модели диаграммаи созмонро бо чаҳор сатҳи лонакунӣ дар шакли бештар шинос нишон медиҳад. Кормандон кунҷҳои график аз ҷадвал мебошанд НИМЗ. Муассисаи "корманд" бо муносибати "пешниҳод" бо худ алоқаманд аст (ReportsTo). Дар истилоҳи график, пайванд як канори (EDGE) мебошад, ки гиреҳҳои (NODE) ​​кормандонро мепайвандад.

Муқаддима ба пойгоҳи додаҳои графикии 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
Акнун биёед тасвири як маълумотро дар шакли график дида бароем. Гиреҳи EMPLOYEE дорои якчанд атрибутҳо мебошад ва бо худ бо муносибати "фиристодан" (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)

Эҷоди ҷадвали канорӣ ба сохтани ҷадвали гиреҳ хеле монанд аст, ба истиснои калимаи калидӣ Ҳамчун EDGE.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017

Акнун биёед муносибатҳои байни кормандонро бо истифода аз сутунҳо муайян кунем EMPNO и М.Г.Р.. Диаграммаи созмон ба таври возеҳ нишон медиҳад, ки чӣ гуна навиштан лозим аст 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

СМС

Объектҳои марбут ба графикҳо дар ҷузвдони ҷадвалҳои графикӣ ҷойгир шудаанд. Тасвири ҷадвали гиреҳ бо нуқта ва тасвири ҷадвали канори бо ду доираҳои пайваст ишора карда шудааст (ки каме ба айнак монанд аст).

Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017

Ифодаи MATCH

Эзоҳ МАТР аз CQL (Cypher Query Language) гирифта шудааст. Ин роҳи самараноки пурсиши хосиятҳои график аст. CQL бо ифода оғоз меёбад МАТР.

наҳвӣ

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
Дархости зерин барои дарёфти кормандон ва менеҷерони сатҳи дуюм барои Смит аст. Агар шумо пешниҳодро хориҷ кунед НОҲИЯИ ПАНҶ, он гоҳ ҳама кормандон дар натиҷа намоиш дода мешаванд.

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 худро ҳамчун як ҳалли мукаммали корпоративӣ барои эҳтиёҷоти гуногуни тиҷорати IT муаррифӣ кардааст. Версияи якуми SQL Graph хеле умедбахш аст. Ҳатто сарфи назар аз баъзе маҳдудиятҳо, аллакай қобилияти кофӣ барои омӯхтани имкониятҳои графикҳо вуҷуд дорад.

Функсияи SQL Graph пурра ба SQL Engine ворид карда шудааст. Аммо, тавре ки аллакай зикр гардид, SQL Server 2017 дорои маҳдудиятҳои зерин аст:

Дастгирии полиморфизм нест.

  • Танҳо пайвандҳои якҷониба дастгирӣ карда мешаванд.
  • Эгҳо наметавонанд сутунҳои $from_id ва $to_id-и худро тавассути UPDATE навсозӣ кунанд.
  • Бастаҳои гузаранда дастгирӣ намешаванд, аммо онҳоро бо истифода аз CTEs ба даст овардан мумкин аст.
  • Дастгирии маҳдуд барои объектҳои OLTP In-Memory.
  • Ҷадвалҳои муваққатӣ (Ҷадвали муваққатии системавӣ), ҷадвалҳои муваққатии маҳаллӣ ва глобалӣ дастгирӣ намешаванд.
  • Намудҳои ҷадвал ва тағирёбандаҳои ҷадвалро ҳамчун NODE ё EDGE эълон кардан мумкин нест.
  • Дархостҳои байнимаълумотҳо дастгирӣ намешаванд.
  • Барои табдил додани ҷадвалҳои муқаррарӣ ба ҷадвалҳои графикӣ роҳи мустақим ё ягон намуди устод (устод) вуҷуд надорад.
  • Барои намоиши графикҳо GUI вуҷуд надорад, аммо Power BI-ро метавон истифода бурд.

Муқаддима ба пойгоҳи додаҳои графикии SQL Server 2017

Бештар:

Манбаъ: will.com

Илова Эзоҳ