SQL Server 2017 grafik ma'lumotlar bazalariga kirish

Kurs boshlanishidan oldin "MS SQL Server Developer" Biz siz uchun yana bir foydali tarjimani tayyorladik.

Grafik ma'lumotlar bazasi ma'lumotlar bazasi mutaxassislari uchun muhim texnologiyadir. Men ushbu sohadagi innovatsiyalar va yangi texnologiyalarni kuzatishga harakat qilaman va relyatsion va NoSQL ma'lumotlar bazalari bilan ishlaganimdan so'ng, grafik ma'lumotlar bazalarining roli tobora ortib borayotganini ko'raman. Murakkab ierarxik ma'lumotlar bilan ishlashda nafaqat an'anaviy ma'lumotlar bazalari, balki NoSQL ham samarasiz. Ko'pincha, ulanish darajalari soni va ma'lumotlar bazasi hajmining oshishi bilan ishlashning pasayishi kuzatiladi. Va munosabatlar murakkablashgani sayin, JOINlar soni ham ortadi.

Albatta, relyatsion modelda ierarxiyalar bilan ishlash uchun echimlar mavjud (masalan, rekursiv CTE-lardan foydalanish), ammo bu hali ham vaqtinchalik echimlar. Shu bilan birga, SQL Server grafik ma'lumotlar bazalarining funksionalligi ierarxiyaning bir necha darajalari bilan ishlashni osonlashtiradi. Ma'lumotlar modeli ham, so'rovlar ham soddalashtirilgan va shuning uchun ularning samaradorligi oshadi. Kod miqdorini sezilarli darajada kamaytiradi.

Grafik ma'lumotlar bazalari murakkab tizimlarni ifodalash uchun ekspressiv tildir. Ushbu texnologiya allaqachon IT sanoatida ijtimoiy tarmoqlar, firibgarlikka qarshi tizimlar, IT tarmoqlarini tahlil qilish, ijtimoiy tavsiyalar, mahsulot va kontent tavsiyalari kabi sohalarda ancha keng qo'llanilmoqda.

SQL Serverdagi grafik ma'lumotlar bazasi funksiyasi ma'lumotlar yuqori darajada o'zaro bog'langan va aniq belgilangan munosabatlarga ega bo'lgan stsenariylar uchun javob beradi.

Grafik ma'lumotlar modeli

Grafik - bu cho'qqilar (tugunlar, tugunlar) va qirralarning (aloqalar, chekka) to'plami. Cho'qqilar ob'ektlarni, qirralari esa atributlari ma'lumotni o'z ichiga olishi mumkin bo'lgan havolalarni ifodalaydi.

Grafik ma'lumotlar bazasi ob'ektlarni grafik nazariyasida aniqlanganidek, grafik sifatida modellashtiradi. Ma'lumotlar tuzilmalari cho'qqilar va qirralardir. Atributlar - bu cho'qqilar va qirralarning xususiyatlari. Bog'lanish cho'qqilarning bog'lanishidir.

Boshqa ma'lumotlar modellaridan farqli o'laroq, grafik ma'lumotlar bazalari ob'ektlar o'rtasidagi munosabatlarga ustunlik beradi. Shuning uchun, xorijiy kalitlar yordamida yoki boshqa yo'l bilan munosabatlarni hisoblashning hojati yo'q. Faqat vertex va chekka abstraktsiyalardan foydalangan holda murakkab ma'lumotlar modellarini yaratish mumkin.

Zamonaviy dunyoda munosabatlarni modellashtirish ko'proq va murakkab usullarni talab qiladi. O'zaro munosabatlarni modellashtirish uchun SQL Server 2017 grafik ma'lumotlar bazasi imkoniyatlarini taklif qiladi. Grafikning uchlari va qirralari jadvallarning yangi turlari sifatida ifodalanadi: TUGUN va EDGE. Grafik so'rovlar MATCH() deb nomlangan yangi T-SQL funksiyasidan foydalanadi. Ushbu funktsiya SQL Server 2017 da o'rnatilganligi sababli, u mavjud ma'lumotlar bazalarida hech qanday ma'lumotlar bazasini o'zgartirmasdan foydalanish mumkin.

Grafik modelning afzalliklari

Hozirgi kunda korxonalar va foydalanuvchilar yuqori unumdorlik va ishonchlilikni kutish bilan birga tobora ko'proq ma'lumotlar bilan ishlaydigan ilovalarni talab qilmoqdalar. Ma'lumotlarning grafik tasviri murakkab munosabatlarni boshqarish uchun qulay vositani taklif qiladi. Ushbu yondashuv ko'plab muammolarni hal qiladi va ma'lum bir kontekstda natijalarga erishishga yordam beradi.

Kelajakda ko'plab ilovalar grafik ma'lumotlar bazasidan foyda ko'radi.

Ma'lumotlarni modellashtirish: aloqadorlikdan grafik modellashtirishgacha

SQL Server 2017 grafik ma'lumotlar bazalariga kirish
misol

Xodimlar ierarxiyasiga ega bo‘lgan tashkiliy tuzilma misolini ko‘rib chiqamiz: xodim boshqaruvchiga, menejer katta rahbarga hisobot beradi va hokazo. Muayyan kompaniyaga qarab, ushbu ierarxiyada har qanday darajadagi darajalar bo'lishi mumkin. Ammo darajalar soni ortib borayotganligi sababli, relyatsion ma'lumotlar bazasida munosabatlarni hisoblash qiyinroq bo'ladi. Xodimlar ierarxiyasini, marketing yoki ijtimoiy media aloqalaridagi ierarxiyani tasavvur qilish juda qiyin. Keling, SQL Graph turli darajadagi ierarxiya bilan ishlash muammosini qanday hal qilishini ko'rib chiqaylik.

Ushbu misol uchun oddiy ma'lumotlar modelini yarataylik. Xodimlar jadvalini tuzing EMP id bilan EMPNO va ustun M.G.R.Xodimning boshlig'ining (menejerining) identifikatoriga ishora qiluvchi A. Ierarxiya haqidagi barcha ma'lumotlar ushbu jadvalda saqlanadi va ustunlar yordamida so'ralishi mumkin EMPNO и M.G.R..

SQL Server 2017 grafik ma'lumotlar bazalariga kirish
Quyidagi diagrammada yana tanish shaklda to'rt darajali joylashtirish bilan bir xil tashkilot diagrammasi modeli ko'rsatilgan. Xodimlar - jadvaldan olingan grafikning uchlari EMP. "Xodim" sub'ekti o'zi bilan "yuboradi" (ReportsTo) munosabati bilan bog'langan. Grafik nuqtai nazaridan, havola xodimlarning tugunlarini (TUGUNLARI) bog'laydigan chekka (EDGE) hisoblanadi.

SQL Server 2017 grafik ma'lumotlar bazalariga kirish

Oddiy jadval tuzamiz EMP va yuqoridagi diagrammaga muvofiq qiymatlarni qo'shing.

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)

Quyidagi rasmda xodimlar ko'rsatilgan:

  • bilan xodim EMPNO 7369 7902 ga bo'ysunadi;
  • bilan xodim EMPNO 7902 7566 ga bo'ysunadi
  • bilan xodim EMPNO 7566 7839 ga bo'ysunadi

SQL Server 2017 grafik ma'lumotlar bazalariga kirish
Endi xuddi shu ma'lumotlarning grafik ko'rinishida tasvirini ko'rib chiqamiz. EMPLOYEE tuguni bir nechta atributlarga ega va o'zi bilan "yuborish" munosabati bilan bog'langan (EmplReportsTo). EmplReportsTo - bu munosabatlarning nomi.

Kengay jadval (EDGE) ham atributlarga ega bo'lishi mumkin.

SQL Server 2017 grafik ma'lumotlar bazalariga kirish
EmpNode tugun jadvalini yarating

Tugun yaratish sintaksisi juda oddiy: ifodaga JADVAL yarating oxiriga qo'shildi TUgun sifatida.

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

Endi ma'lumotlarni oddiy jadvaldan grafikga aylantiramiz. Keyingisi KIRITMOQ relyatsion jadvaldan ma'lumotlarni kiritadi EMP.

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

SQL Server 2017 grafik ma'lumotlar bazalariga kirish
Maxsus ustundagi tugun jadvalida $node_id_* xost identifikatori JSON sifatida saqlanadi. Ushbu jadvalning qolgan ustunlari tugunning atributlarini o'z ichiga oladi.

Kenarlarni yaratish (EDGE)

Kengay jadvalni yaratish tugun jadvalini yaratishga juda o'xshaydi, faqat kalit so'zdan tashqari EDGE sifatida.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

SQL Server 2017 grafik ma'lumotlar bazalariga kirish

Endi ustunlar yordamida xodimlar o'rtasidagi munosabatlarni aniqlaymiz EMPNO и M.G.R.. Tashkilot diagrammasi qanday yozishni aniq ko'rsatadi KIRITMOQ.

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

Chek jadvali sukut bo'yicha uchta ustunga ega. Birinchidan, $edge_id — JSON ko'rinishidagi chekka identifikator. Qolgan ikkitasi ($from_id и $to_id) tugunlar orasidagi munosabatni ifodalaydi. Bundan tashqari, qirralarning qo'shimcha xususiyatlarga ega bo'lishi mumkin. Bizning holatda, bu Deptno.

Tizim ko'rinishlari

Tizim ko'rinishida sys.tables Ikkita yangi ustun mavjud:

  1. is_edge
  2. is_tugun

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

SQL Server 2017 grafik ma'lumotlar bazalariga kirish

ssms

Grafiklarga tegishli ob'ektlar Grafik jadvallari papkasida joylashgan. Tugun jadvali belgisi nuqta bilan, chekka stol belgisi esa ikkita bog'langan doira bilan belgilanadi (bu biroz ko'zoynakga o'xshaydi).

SQL Server 2017 grafik ma'lumotlar bazalariga kirish

MATCH ifodasi

So'zlashuv MATh CQL (Cypher Query Language) dan olingan. Bu grafik xususiyatlarini so'rashning samarali usuli. CQL ifoda bilan boshlanadi MATh.

sintaktik

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

misollar

Keling, bir nechta misollarni ko'rib chiqaylik.

Quyidagi so'rovda Smit va uning menejeri hisobot beradigan xodimlar ko'rsatilgan.

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 grafik ma'lumotlar bazalariga kirish
Quyidagi so'rov Smit uchun xodimlar va ikkinchi darajali menejerlarni topish uchun mo'ljallangan. Agar taklifni olib tashlasangiz WHERE, keyin barcha xodimlar natija sifatida ko'rsatiladi.

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 grafik ma'lumotlar bazalariga kirish
Va nihoyat, uchinchi darajali xodimlar va menejerlar uchun so'rov.

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 grafik ma'lumotlar bazalariga kirish
Endi Smitning boshliqlarini olish uchun yo'nalishni o'zgartiraylik.

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 grafik ma'lumotlar bazalariga kirish

xulosa

SQL Server 2017 turli xil biznes IT ehtiyojlari uchun to'liq korporativ yechim sifatida o'zini namoyon qildi. SQL Graph ning birinchi versiyasi juda istiqbolli. Ba'zi cheklovlarga qaramay, grafiklarning imkoniyatlarini o'rganish uchun allaqachon etarli funktsional imkoniyatlar mavjud.

SQL Graph funksiyasi to'liq SQL Engine bilan birlashtirilgan. Biroq, yuqorida aytib o'tilganidek, SQL Server 2017 quyidagi cheklovlarga ega:

Polimorfizmni qo'llab-quvvatlamaydi.

  • Faqat bir yo'nalishli havolalar qo'llab-quvvatlanadi.
  • Kenarlar $from_id va $to_id ustunlarini UPDATE orqali yangilay olmaydi.
  • Transitiv yopilishlar qo'llab-quvvatlanmaydi, lekin ularni CTE yordamida olish mumkin.
  • In-Memory OLTP ob'ektlari uchun cheklangan qo'llab-quvvatlash.
  • Vaqtinchalik jadvallar (System Versioned Temporal Table), vaqtinchalik mahalliy va global jadvallar qo'llab-quvvatlanmaydi.
  • Jadval turlari va jadval o'zgaruvchilari NODE yoki EDGE sifatida e'lon qilinishi mumkin emas.
  • Maʼlumotlar bazalari oʻrtasidagi soʻrovlar qoʻllab-quvvatlanmaydi.
  • Oddiy jadvallarni grafik jadvallarga aylantirish uchun to'g'ridan-to'g'ri yo'l yoki qandaydir sehrgar (sehrgar) mavjud emas.
  • Grafiklarni ko'rsatish uchun GUI yo'q, lekin Power BI dan foydalanish mumkin.

SQL Server 2017 grafik ma'lumotlar bazalariga kirish

Ko'proq o'qish:

Manba: www.habr.com

a Izoh qo'shish