SQL Server 2017 Qrafik verilənlər bazalarına giriş

Kursun başlamazdan əvvəl "MS SQL Server Developer" Sizin üçün daha bir faydalı tərcümə hazırlamışıq.

Qrafik verilənlər bazaları verilənlər bazası mütəxəssisləri üçün mühüm texnologiyadır. Bu sahədəki yenilikləri və yeni texnologiyaları izləməyə çalışıram və relational və NoSQL verilənlər bazaları ilə işlədikdən sonra qrafik verilənlər bazalarının rolunun getdikcə artdığını görürəm. Mürəkkəb iyerarxik verilənlərlə işləyərkən təkcə ənənəvi verilənlər bazaları deyil, NoSQL də səmərəsiz olur. Çox vaxt bağlantı səviyyələrinin sayının və verilənlər bazasının ölçüsünün artması ilə performansda azalma müşahidə olunur. Münasibətlər mürəkkəbləşdikcə, QOŞULUŞLARIN sayı da artır.

Əlbəttə ki, relational modeldə iyerarxiyalarla işləmək üçün həllər var (məsələn, rekursiv CTE-lərdən istifadə etməklə), lakin bunlar hələ də həlledicidir. Eyni zamanda, SQL Server qrafik verilənlər bazalarının funksionallığı iyerarxiyanın çoxsaylı səviyyələrini idarə etməyi asanlaşdırır. Həm məlumat modeli, həm də sorğular sadələşdirilir və buna görə də onların effektivliyi artır. Kodun miqdarını əhəmiyyətli dərəcədə azaldır.

Qrafik verilənlər bazaları mürəkkəb sistemləri təmsil etmək üçün ifadəli dildir. Bu texnologiya sosial şəbəkələr, fırıldaqçılıq əleyhinə sistemlər, İT şəbəkələrinin təhlili, sosial tövsiyələr, məhsul və məzmun tövsiyələri kimi sahələrdə artıq İT sənayesində kifayət qədər geniş istifadə olunur.

SQL Server-də qrafik verilənlər bazası funksionallığı verilənlərin yüksək dərəcədə bir-biri ilə əlaqəli olduğu və yaxşı müəyyən edilmiş əlaqələrə malik olduğu ssenarilər üçün uyğundur.

Qrafik məlumat modeli

Qrafik təpələr (qovşaqlar, düyünlər) və kənarlar (əlaqələr, kənar) toplusudur. Təpələr obyektləri, kənarlar isə atributlarında məlumat ola bilən keçidləri təmsil edir.

Qrafik verilənlər bazası obyektləri qrafik nəzəriyyəsində müəyyən edildiyi kimi qrafik kimi modelləşdirir. Məlumat strukturları təpələr və kənarlardır. Atributlar təpə və kənarların xassələridir. Əlaqə təpələrin əlaqəsidir.

Digər məlumat modellərindən fərqli olaraq, qrafik verilənlər bazaları obyektlər arasında əlaqələrə üstünlük verir. Buna görə də, xarici açarlardan istifadə edərək və ya başqa bir şəkildə əlaqələri hesablamağa ehtiyac yoxdur. Yalnız təpə və kənar abstraksiyalardan istifadə edərək mürəkkəb məlumat modelləri yaratmaq mümkündür.

Müasir dünyada münasibətlərin modelləşdirilməsi getdikcə daha mürəkkəb texnikalar tələb edir. Əlaqələri modelləşdirmək üçün SQL Server 2017 qrafik verilənlər bazası imkanlarını təklif edir. Qrafikin təpələri və kənarları yeni növ cədvəllər kimi təqdim olunur: NODE və EDGE. Qrafik sorğular MATCH() adlı yeni T-SQL funksiyasından istifadə edir. Bu funksionallıq SQL Server 2017-də qurulduğundan, heç bir verilənlər bazası çevrilməsinə ehtiyac olmadan mövcud verilənlər bazalarınızda istifadə edilə bilər.

Qrafik Modelin Faydaları

Hal-hazırda, biznes və istifadəçilər yüksək performans və etibarlılıq gözləyərkən getdikcə daha çox məlumatla işləyən proqramlar tələb edirlər. Məlumatların qrafik təsviri mürəkkəb münasibətləri idarə etmək üçün əlverişli vasitə təklif edir. Bu yanaşma bir çox problemləri həll edir və müəyyən kontekstdə nəticələr əldə etməyə kömək edir.

Görünür, bir çox proqram gələcəkdə qrafik verilənlər bazalarından faydalanacaq.

Məlumatların Modelləşdirilməsi: Relationaldan Qrafik Modelləşdirməyə

SQL Server 2017 Qrafik verilənlər bazalarına giriş
Misal

İşçilərin iyerarxiyasına malik təşkilati struktur nümunəsinə baxaq: işçi menecerə, menecer yüksək səviyyəli menecerə hesabat verir və s. Xüsusi şirkətdən asılı olaraq, bu iyerarxiyada istənilən sayda səviyyə ola bilər. Lakin səviyyələrin sayı artdıqca, əlaqəli verilənlər bazasında əlaqələrin hesablanması getdikcə çətinləşir. İşçilərin iyerarxiyasını, marketinqdə və ya sosial media əlaqələrində iyerarxiyanı təsəvvür etmək olduqca çətindir. Gəlin görək SQL Graph müxtəlif səviyyəli iyerarxiyanın idarə olunması problemini necə həll edə bilər.

Bu misal üçün sadə bir verilənlər modelini yaradaq. İşçilərin cədvəlini yaradın EMP id ilə EMPNO və sütun M.G.R.İşçinin rəhbərinin (menecerinin) şəxsiyyət vəsiqəsini göstərən A. İyerarxiya ilə bağlı bütün məlumatlar bu cədvəldə saxlanılır və sütunlar vasitəsilə sorğulana bilər EMPNO и M.G.R..

SQL Server 2017 Qrafik verilənlər bazalarına giriş
Aşağıdakı diaqram daha tanış formada dörd səviyyəli yuva ilə eyni təşkilat qrafiki modelini göstərir. İşçilər cədvəldən qrafikin təpələridir EMP. "İşçi" müəssisəsi "təqdim etdiyi" əlaqə ilə özü ilə əlaqələndirilir (ReportsTo). Qrafik baxımından, keçid işçilərin qovşaqlarını (NODE) ​​birləşdirən kənardır (EDGE).

SQL Server 2017 Qrafik verilənlər bazalarına giriş

Gəlin adi bir cədvəl yaradaq EMP və yuxarıdakı diaqrama uyğun olaraq orada dəyərlər əlavə edin.

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)

Aşağıdakı rəqəm işçiləri göstərir:

  • ilə işçi EMPNO 7369 7902-yə tabedir;
  • ilə işçi EMPNO 7902 7566-ya tabedir
  • ilə işçi EMPNO 7566 7839-ya tabedir

SQL Server 2017 Qrafik verilənlər bazalarına giriş
İndi eyni verilənlərin qrafik şəklində təqdim edilməsinə baxaq. EMPLOYEE node bir neçə atributlara malikdir və özü ilə "göndərmə" əlaqəsi (EmplReportsTo) ilə əlaqələndirilir. EmplReportsTo əlaqənin adıdır.

Kenar cədvəlinin (EDGE) atributları da ola bilər.

SQL Server 2017 Qrafik verilənlər bazalarına giriş
EmpNode node cədvəli yaradın

Bir node yaratmaq üçün sintaksis olduqca sadədir: ifadəyə CƏDVƏL YARADIN sonuna əlavə edildi NODE KİMİ.

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

İndi məlumatları adi cədvəldən qrafikə çevirək. Sonrakı INSERT əlaqə cədvəlindən məlumatları daxil edir EMP.

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

SQL Server 2017 Qrafik verilənlər bazalarına giriş
Xüsusi sütunda node cədvəlində $node_id_* host ID JSON kimi saxlanılır. Bu cədvəlin qalan sütunları qovşağın atributlarını ehtiva edir.

Kenarlar yaradın (EDGE)

Açar sözdən başqa, kənar cədvəlin yaradılması qovşaq cədvəlinin yaradılmasına çox bənzəyir EDGE KİMİ.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

SQL Server 2017 Qrafik verilənlər bazalarına giriş

İndi sütunlardan istifadə edərək işçilər arasında münasibətləri müəyyən edək EMPNO и M.G.R.. Təşkilat cədvəli necə yazmaq lazım olduğunu aydın şəkildə göstərir 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);

Kenar cədvəlində standart olaraq üç sütun var. Birinci, $edge_id — JSON formasında kənar identifikator. Digər ikisi ($from_id и $to_id) qovşaqlar arasında əlaqəni təmsil edir. Bundan əlavə, kənarlar əlavə xüsusiyyətlərə malik ola bilər. Bizim vəziyyətimizdə bu Deptno.

Sistem Baxışları

Sistem görünüşündə sys.tables İki yeni sütun var:

  1. kənardır
  2. is_node

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

SQL Server 2017 Qrafik verilənlər bazalarına giriş

ssms

Qrafiklərlə əlaqəli obyektlər Qrafik Cədvəllər qovluğunda yerləşir. Düyün cədvəli işarəsi nöqtə ilə, kənar masa ikonu isə iki əlaqəli dairə ilə işarələnir (bir az eynək kimi görünür).

SQL Server 2017 Qrafik verilənlər bazalarına giriş

MATCH ifadəsi

İfadə MAÇ CQL-dən (Cypher Query Language) götürülmüşdür. Bu, qrafikin xüsusiyyətlərini sorğulamaq üçün effektiv bir yoldur. CQL bir ifadə ilə başlayır MAÇ.

sintaksis

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

Nümunələr

Gəlin bir neçə nümunəyə baxaq.

Aşağıdakı sorğu Smitin və menecerinin hesabat verdiyi işçiləri göstərir.

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 Qrafik verilənlər bazalarına giriş
Aşağıdakı sorğu Smith üçün işçilər və ikinci səviyyə menecerləri tapmaq üçündür. Təklifi silsəniz HARADA, nəticədə bütün işçilər göstəriləcək.

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 Qrafik verilənlər bazalarına giriş
Və nəhayət, üçüncü səviyyəli işçilər və menecerlər üçün bir sorğu.

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 Qrafik verilənlər bazalarına giriş
İndi Smithin müdirlərini əldə etmək üçün istiqaməti dəyişdirək.

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 Qrafik verilənlər bazalarına giriş

Nəticə

SQL Server 2017 özünü müxtəlif biznes İT ehtiyacları üçün tam korporativ həll yolu kimi göstərmişdir. SQL Graph-ın ilk versiyası çox perspektivlidir. Bəzi məhdudiyyətlərə baxmayaraq, qrafiklərin imkanlarını araşdırmaq üçün artıq kifayət qədər funksionallıq mövcuddur.

SQL Graph funksionallığı SQL Engine-ə tam inteqrasiya olunub. Bununla belə, artıq qeyd edildiyi kimi, SQL Server 2017 aşağıdakı məhdudiyyətlərə malikdir:

Polimorfizm üçün dəstək yoxdur.

  • Yalnız bir istiqamətli bağlantılar dəstəklənir.
  • Kenarlar YENİLƏNİB vasitəsilə $from_id və $to_id sütunlarını yeniləyə bilməz.
  • Keçidli bağlamalar dəstəklənmir, lakin onları CTE-lərdən istifadə etməklə əldə etmək olar.
  • Yaddaşdaxili OLTP obyektləri üçün məhdud dəstək.
  • Müvəqqəti cədvəllər (Sistem Versioned Temporal Cədvəl), müvəqqəti yerli və qlobal cədvəllər dəstəklənmir.
  • Cədvəl növləri və cədvəl dəyişənləri NODE və ya EDGE kimi elan edilə bilməz.
  • Verilənlər bazası arası sorğular dəstəklənmir.
  • Adi cədvəlləri qrafik cədvəllərə çevirmək üçün birbaşa yol və ya bir növ sehrbaz (sehrbaz) yoxdur.
  • Qrafikləri göstərmək üçün GUI yoxdur, lakin Power BI istifadə edilə bilər.

SQL Server 2017 Qrafik verilənlər bazalarına giriş

Daha çox oxu:

Mənbə: www.habr.com

Добавить комментарий