گراف ڊيٽابيس جو تعارف SQL سرور 2017

ڪورس جي شروعات کان اڳ "MS SQL سرور ڊولپر" اسان توهان لاءِ هڪ ٻيو مفيد ترجمو تيار ڪيو آهي.

گراف ڊيٽابيس ڊيٽابيس پروفيسر لاءِ هڪ اهم ٽيڪنالاجي آهن. مان ڪوشش ڪريان ٿو ته هن علائقي ۾ جدت ۽ نئين ٽيڪنالاجيز سان گڏ، ۽، لاڳاپيل ۽ NoSQL ڊيٽابيس سان ڪم ڪرڻ کان پوء، مون کي گراف ڊيٽابيس جو ڪردار تمام گهڻو اهم ٿي رهيو آهي. جڏهن پيچيده درجه بندي واري ڊيٽا سان ڪم ڪندي، نه رڳو روايتي ڊيٽابيس غير موثر آهن، پر NoSQL پڻ. گهڻو ڪري، جيئن ڪنيڪشن جي سطحن جو تعداد ۽ ڊيٽابيس جي سائيز وڌائي ٿي، ڪارڪردگي گھٽجي ٿي. ۽ جيئن ته رشتا وڌيڪ پيچيده ٿي ويندا آهن، شامل ٿيڻ جو تعداد پڻ وڌي ٿو.

يقينن، لاڳاپي واري ماڊل کي حل ڪرڻ سان ڪم ڪرڻ جا حل آهن (مثال طور، ٻيهر ورجائيندڙ CTEs استعمال ڪندي)، پر اهي اڃا تائين ڪم ڪار آهن. ساڳئي وقت، SQL سرور گراف ڊيٽابيس جي ڪارڪردگي توهان کي آساني سان ترتيب ڏيڻ جي ڪيترن ئي سطحن کي سنڀالڻ جي اجازت ڏئي ٿي. ٻئي ڊيٽا ماڊل ۽ سوالن کي آسان ڪيو ويو آهي، ۽ تنهن ڪري انهن جي ڪارڪردگي وڌائي ٿي. ڪوڊ جو مقدار تمام گھٽجي ويو آھي.

گراف ڊيٽابيس پيچيده سسٽم جي نمائندگي ڪرڻ لاء هڪ اظهار ڪندڙ ٻولي آهي. هي ٽيڪنالاجي اڳ ۾ ئي وڏي پيماني تي استعمال ڪيو ويو آهي آئي ٽي صنعت ۾ علائقن جهڙوڪ سماجي نيٽ ورڪ، مخالف فراڊ سسٽم، آئي ٽي نيٽ ورڪ تجزيو، سماجي سفارشون، پيداوار ۽ مواد سفارشون.

SQL سرور ۾ گراف ڊيٽابيس جي ڪارڪردگي ان منظرنامي لاءِ موزون آھي جتي ڊيٽا تمام گھڻي ڳنڍيل آھي ۽ چڱي طرح بيان ڪيل رشتا آھن.

گراف ڊيٽا ماڊل

گراف عمودي (نوڊس) ۽ ڪنارن جو هڪ سيٽ آهي (رابطا، کنڊ). عمودي ادارن جي نمائندگي ڪن ٿا، ۽ ڪنڊن رشتي جي نمائندگي ڪن ٿا جن جي خاصيتن ۾ معلومات شامل ٿي سگھي ٿي.

هڪ گراف ڊيٽابيس ماڊل ادارن کي گراف جي طور تي بيان ڪري ٿو جيئن گراف ٿيوري ۾ بيان ڪيو ويو آهي. ڊيٽا جي جوڙجڪ عمدي ۽ ڪنڊن وارا آهن. خاصيتون عمودي ۽ ڪنارن جون خاصيتون آهن. ڪنيڪشن عمودي جو هڪ ڪنيڪشن آهي.

ٻين ڊيٽا ماڊلز جي برعڪس، گراف ڊيٽابيس ادارن جي وچ ۾ لاڳاپن کي ترجيح ڏين ٿا. تنهن ڪري، غير ملڪي ڪنجيون يا ڪنهن ٻئي وسيلا استعمال ڪندي لاڳاپن کي ڳڻڻ جي ڪا ضرورت ناهي. اهو ممڪن آهي ته پيچيده ڊيٽا ماڊل ٺاهڻ لاء صرف vertex ۽ کنڊ جي خلاصن کي استعمال ڪندي.

جديد دنيا ۾، ماڊلنگ لاڳاپا وڌندڙ پيچيده ٽيڪنالاجي جي ضرورت آهي. رشتن کي ماڊل ڪرڻ لاءِ، SQL سرور 2017 پيش ڪري ٿو گراف ڊيٽابيس صلاحيتون. گراف جي چوٽي ۽ ڪنڊن کي نئين قسم جي جدولن جي طور تي پيش ڪيو ويو آهي: NODE ۽ EDGE. گراف جا سوال استعمال ڪن ٿا ھڪڙو نئون T-SQL فنڪشن جنھن کي MATCH(). جيئن ته هي ڪارڪردگي SQL سرور 2017 ۾ ٺهيل آهي، اهو توهان جي موجوده ڊيٽابيس ۾ استعمال ڪري سگهجي ٿو بغير ڪنهن به تبديلي جي ضرورت جي.

گراف ماڊل جا فائدا

اڄ، ڪاروبار ۽ صارفين ايپليڪيشنن جو مطالبو ڪن ٿيون جيڪي وڌيڪ ۽ وڌيڪ ڊيٽا کي هٿي وٺن، جڏهن ته اعلي ڪارڪردگي ۽ اعتبار جي اميد رکي ٿي. گراف جي طور تي ڊيٽا کي پيش ڪرڻ پيچيده رشتن کي سنڀالڻ جو هڪ آسان ذريعو پيش ڪري ٿو. اهو طريقو ڪيترن ئي مسئلن کي حل ڪري ٿو ۽ هڪ ڏنل حوالي سان نتيجا حاصل ڪرڻ ۾ مدد ڪري ٿو.

اهو ڏسڻ ۾ اچي ٿو ته ڪيتريون ئي ايپليڪيشنون مستقبل ۾ گراف ڊيٽابيس استعمال ڪرڻ مان فائدو وٺنديون.

ڊيٽا ماڊلنگ: تعلقي کان گراف ماڊل تائين

گراف ڊيٽابيس جو تعارف SQL سرور 2017
مثال طور

اچو ته ڏسو هڪ تنظيمي ڍانچي جو هڪ مثال ملازمن جي درجي بندي سان: هڪ ملازم مئنيجر کي رپورٽ ڪري ٿو، مئنيجر سينئر مئنيجر کي رپورٽ ڪري ٿو، وغيره. مخصوص ڪمپني تي مدار رکندي، هن درجي بندي ۾ ڪي به نمبر هوندا. پر جيئن ته سطحن جو تعداد وڌي ٿو، رشتي جي ڊيٽابيس ۾ رشتن کي ڳڻڻ وڌيڪ ۽ وڌيڪ پيچيده ٿي ويندو آهي. اهو تصور ڪرڻ ڏاڍو ڏکيو آهي ملازمن جي درجي بندي، مارڪيٽنگ ۾ درجه بندي يا سماجي نيٽ ورڪن ۾ ڪنيڪشن. اچو ته ڏسون ته SQL گراف ڪيئن حل ڪري سگھي ٿو مختلف سطحن کي ھٿ ڪرڻ جو مسئلو.

هن مثال لاءِ اسان هڪ سادي ڊيٽا ماڊل ٺاهينداسين. اچو ته ملازمن جي ٽيبل ٺاهي EMP ID سان EMPNO ۽ ڪالم ايم آر آر, ملازم جي سپروائيزر (منيجر) جي سڃاڻپ ڪندڙ کي اشارو ڪندي. درجه بندي جي باري ۾ سڀ معلومات هن جدول ۾ ذخيرو ٿيل آهي ۽ ڪالمن استعمال ڪندي پڇي سگهجي ٿو EMPNO и ايم آر آر.

گراف ڊيٽابيس جو تعارف SQL سرور 2017
هيٺ ڏنل آراگرام ڏيکاري ٿو ساڳي تنظيمي ڍانچي جو ماڊل هڪ وڌيڪ واقف شڪل ۾ nesting جي چئن سطحن سان. ملازم هڪ ٽيبل مان گراف جي چوٽي آهن EMP. ادارو ”ملازم“ پاڻ سان ڳنڍيل آهي ڪنيڪشن ”جمع“ (ReportsTo). گراف جي اصطلاحن ۾، هڪ لنڪ هڪ کنڊ (EDGE) آهي جيڪو نوڊس (NODE) ​​کي ڳنڍيندو آهي.

گراف ڊيٽابيس جو تعارف SQL سرور 2017

اچو ته هڪ باقاعده ٽيبل ٺاهيو EMP ۽ مٿي ڏنل ڊراگرام جي مطابق اتي قدر شامل ڪريو.

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 سرور 2017
هاڻي اچو ته ساڳئي ڊيٽا جي گراف جي نمائندگي کي ڏسو. EMPLOYEE vertex ڪيترن ئي خاصيتون آهن ۽ پاڻ سان ڳنڍيل آهي "ماتحت" تعلق (EmplReportsTo). EmplReportsTo تعلق جو نالو آهي.

ايج ٽيبل (EDGE) ۾ به خاصيتون شامل ٿي سگھن ٿيون.

گراف ڊيٽابيس جو تعارف SQL سرور 2017
اچو ته هڪ نوڊ ٽيبل ٺاهيون EmpNode

نوڊ ٺاهڻ لاءِ نحو بلڪل سادو آهي: اظهار ڏانهن ٽيبل ٺاهيو آخر ۾ شامل ڪيو ويو آهي "AS NODE".

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 هڪ تعلقي جدول مان ڊيٽا داخل ڪري ٿو EMP.

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

گراف ڊيٽابيس جو تعارف SQL سرور 2017
ھڪڙي خاص ڪالمن ۾ نوڊس جي جدول ۾ $node_id_* نوڊ سڃاڻپ ڪندڙ JSON طور محفوظ ٿيل آهي. ھن جدول جي باقي ڪالمن ۾ نوڊ جون خاصيتون شامل آھن.

ڪنارن ٺاهڻ (EDGE)

ايج ٽيبل ٺاهڻ بلڪل هڪ نوڊ ٽيبل ٺاهڻ جي برابر آهي، سواءِ ان جي ته لفظ استعمال ڪيو وڃي "اي ايس ايج".

CREATE TABLE empReportsTo(Deptno int) AS EDGE

گراف ڊيٽابيس جو تعارف SQL سرور 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. is_edge
  2. is_node

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

گراف ڊيٽابيس جو تعارف SQL سرور 2017

ايس ايس ايم ايس

گراف سان لاڳاپيل شيون گراف ٽيبل فولڊر ۾ واقع آهن. نوڊ ٽيبل آئڪن کي ڊٽ سان نشان لڳايو ويو آهي، ۽ ڪنڊ ٽيبل جي آئڪن کي ٻن ڳنڍيل حلقن سان نشان لڳل آهي (ٿورو شيشي وانگر).

گراف ڊيٽابيس جو تعارف SQL سرور 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 سرور 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 سرور 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 سرور 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 سرور 2017

ٿڪل

SQL Server 2017 پاڻ کي مختلف IT ڪاروباري ڪمن لاءِ هڪ مڪمل انٽرپرائز حل طور قائم ڪيو آهي. SQL گراف جو پهريون نسخو تمام پرجوش آهي. جيتوڻيڪ ڪجھ حدن جي باوجود، گراف جي صلاحيتن کي ڳولڻ لاء اڳ ۾ ئي ڪافي ڪارڪردگي موجود آھي.

SQL گراف ڪارڪردگي مڪمل طور تي SQL انجڻ ۾ ضم ٿيل آھي. جڏهن ته، جيئن اڳ ۾ ئي چيو ويو آهي، SQL سرور 2017 هيٺ ڏنل حدون آهن:

ڪابه پوليمورفيزم جي حمايت ناهي.

  • صرف اڻ سڌي ڪنيڪشن جي حمايت ڪئي وئي آهي.
  • Edges UPDATE ذريعي $from_id ۽ $to_id ڪالمن کي اپڊيٽ نٿا ڪري سگهن.
  • منتقلي بندش جي حمايت نه ڪئي وئي آهي، پر اهي CTE استعمال ڪندي حاصل ڪري سگھجن ٿيون.
  • ان-ميموري OLTP شين لاءِ سپورٽ محدود آهي.
  • عارضي جدولن (سسٽم-ورزن ٿيل عارضي ٽيبل)، عارضي مقامي ۽ عالمي جدولن کي سپورٽ نه ڪئي وئي آهي.
  • ٽيبل جي قسمن ۽ ٽيبل جي متغيرن کي NODE يا EDGE طور قرار نه ٿو ڏئي سگھجي.
  • ڪراس ڊيٽابيس سوالن جي حمايت نه ڪئي وئي آهي.
  • باقاعده جدولن کي گراف جدولن ۾ تبديل ڪرڻ لاءِ ڪو سڌو رستو يا جادوگر نه آھي.
  • گراف ڏيکارڻ لاءِ ڪو به GUI ناهي، پر توهان پاور BI استعمال ڪري سگهو ٿا.

گراف ڊيٽابيس جو تعارف SQL سرور 2017

وڌيڪ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو