ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف

کورس کے آغاز سے پہلے "MS SQL سرور ڈویلپر" ہم نے آپ کے لیے ایک اور مفید ترجمہ تیار کیا ہے۔

گراف ڈیٹا بیسز ڈیٹا بیس کے پیشہ ور افراد کے لیے ایک اہم ٹیکنالوجی ہیں۔ میں اس شعبے میں اختراعات اور نئی ٹیکنالوجیز کی پیروی کرنے کی کوشش کرتا ہوں اور رشتہ دار اور NoSQL ڈیٹا بیس کے ساتھ کام کرنے کے بعد، میں دیکھ رہا ہوں کہ گراف ڈیٹا بیس کا کردار زیادہ سے زیادہ ہوتا جا رہا ہے۔ پیچیدہ درجہ بندی کے اعداد و شمار کے ساتھ کام کرتے وقت، نہ صرف روایتی ڈیٹا بیس، بلکہ NoSQL بھی غیر موثر ہوتے ہیں۔ اکثر، لنک کی سطح کی تعداد اور ڈیٹا بیس کے سائز میں اضافے کے ساتھ، کارکردگی میں کمی واقع ہوتی ہے۔ اور جیسے جیسے تعلقات مزید پیچیدہ ہوتے جاتے ہیں، JOIN کی تعداد بھی بڑھتی جاتی ہے۔

یقینا، رشتہ دار ماڈل میں درجہ بندی کے ساتھ کام کرنے کے حل موجود ہیں (مثال کے طور پر، تکرار کرنے والے CTEs کا استعمال کرتے ہوئے)، لیکن یہ اب بھی کام کے راستے ہیں۔ ایک ہی وقت میں، SQL سرور گراف ڈیٹا بیس کی فعالیت درجہ بندی کی متعدد سطحوں کو سنبھالنا آسان بناتی ہے۔ ڈیٹا ماڈل اور سوالات دونوں کو آسان بنایا گیا ہے، اور اس وجہ سے ان کی کارکردگی میں اضافہ ہوا ہے۔ کوڈ کی مقدار کو نمایاں طور پر کم کرتا ہے۔

گراف ڈیٹا بیس پیچیدہ نظاموں کی نمائندگی کرنے کے لیے ایک اظہاری زبان ہے۔ یہ ٹیکنالوجی پہلے ہی آئی ٹی انڈسٹری میں سوشل نیٹ ورکس، اینٹی فراڈ سسٹمز، آئی ٹی نیٹ ورک تجزیہ، سماجی سفارشات، پروڈکٹ اور مواد کی سفارشات جیسے شعبوں میں کافی وسیع پیمانے پر استعمال ہو رہی ہے۔

ایس کیو ایل سرور میں گراف ڈیٹا بیس کی فعالیت ان منظرناموں کے لیے موزوں ہے جہاں ڈیٹا بہت زیادہ باہم مربوط ہے اور اچھی طرح سے متعین تعلقات رکھتا ہے۔

گراف ڈیٹا ماڈل

گراف عمودی (نوڈس، نوڈ) اور کناروں (تعلقات، کنارے) کا ایک مجموعہ ہے۔ عمودی ہستیوں کی نمائندگی کرتے ہیں، اور کنارے ان لنکس کی نمائندگی کرتے ہیں جن کی صفات معلومات پر مشتمل ہوسکتی ہیں۔

گراف تھیوری میں بیان کردہ گراف ڈیٹابیس اداروں کو بطور گراف بناتا ہے۔ ڈیٹا ڈھانچے عمودی اور کنارے ہیں۔ صفات عمودی اور کناروں کی خصوصیات ہیں۔ کنکشن عمودی کا ایک کنکشن ہے۔

دیگر ڈیٹا ماڈلز کے برعکس، گراف ڈیٹا بیس اداروں کے درمیان تعلقات کو ترجیح دیتے ہیں۔ لہذا، غیر ملکی چابیاں یا کسی اور طریقے سے تعلقات کا حساب لگانے کی ضرورت نہیں ہے۔ صرف ورٹیکس اور ایج تجرید کا استعمال کرتے ہوئے پیچیدہ ڈیٹا ماڈل بنانا ممکن ہے۔

آج کی دنیا میں، ماڈلنگ تعلقات کو زیادہ سے زیادہ جدید ترین تکنیکوں کی ضرورت ہوتی ہے۔ تعلقات کو ماڈل کرنے کے لیے، SQL سرور 2017 گراف ڈیٹا بیس کی صلاحیتیں پیش کرتا ہے۔ گراف کے عمودی اور کناروں کو میزوں کی نئی اقسام کے طور پر دکھایا گیا ہے: NODE اور EDGE۔ گراف کے سوالات MATCH() کے نام سے ایک نیا T-SQL فنکشن استعمال کرتے ہیں۔ چونکہ یہ فعالیت SQL Server 2017 میں بنائی گئی ہے، اس لیے اسے آپ کے موجودہ ڈیٹا بیس میں کسی ڈیٹا بیس کی تبدیلی کی ضرورت کے بغیر استعمال کیا جا سکتا ہے۔

گراف ماڈل کے فوائد

آج کل، کاروبار اور صارفین ایسی ایپلی کیشنز کا مطالبہ کرتے ہیں جو زیادہ سے زیادہ ڈیٹا کے ساتھ کام کرتی ہیں، جبکہ اعلی کارکردگی اور قابل اعتمادی کی توقع رکھتے ہیں۔ اعداد و شمار کے گراف کی نمائندگی پیچیدہ تعلقات کو سنبھالنے کے لیے ایک آسان ذریعہ پیش کرتی ہے۔ یہ نقطہ نظر بہت سے مسائل کو حل کرتا ہے اور ایک دیئے گئے تناظر میں نتائج حاصل کرنے میں مدد کرتا ہے۔

ایسا لگتا ہے کہ مستقبل میں گراف ڈیٹا بیس سے بہت سی ایپلی کیشنز کو فائدہ ہوگا۔

ڈیٹا ماڈلنگ: رشتہ دار سے لے کر گراف ماڈلنگ تک

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف
مثال کے طور پر

آئیے ملازمین کے درجہ بندی کے ساتھ تنظیمی ڈھانچے کی ایک مثال دیکھیں: ایک ملازم مینیجر کو رپورٹ کرتا ہے، مینیجر سینئر مینیجر کو رپورٹ کرتا ہے، وغیرہ۔ مخصوص کمپنی پر منحصر ہے، اس درجہ بندی میں کسی بھی سطح کی تعداد ہو سکتی ہے۔ لیکن جیسے جیسے سطحوں کی تعداد بڑھتی جاتی ہے، رشتہ دار ڈیٹا بیس میں رشتوں کا حساب لگانا زیادہ مشکل ہوتا جاتا ہے۔ ملازمین کے درجہ بندی، مارکیٹنگ یا سوشل میڈیا کنکشن میں درجہ بندی کا تصور کرنا کافی مشکل ہے۔ آئیے دیکھتے ہیں کہ کس طرح ایس کیو ایل گراف درجہ بندی کی مختلف سطحوں کو سنبھالنے کے مسئلے کو حل کر سکتا ہے۔

اس مثال کے لیے، آئیے ایک سادہ ڈیٹا ماڈل بناتے ہیں۔ ملازمین کی ایک میز بنائیں EMP آئی ڈی کے ساتھ EMPNO اور کالم ایم جی آرA جو ملازم کے سربراہ (مینیجر) کی ID کی طرف اشارہ کرتا ہے۔ درجہ بندی کے بارے میں تمام معلومات اس جدول میں محفوظ ہیں اور کالموں کا استعمال کرتے ہوئے استفسار کیا جا سکتا ہے۔ EMPNO и ایم جی آر.

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف
مندرجہ ذیل خاکہ ایک ہی org چارٹ ماڈل کو بھی زیادہ مانوس شکل میں گھونسلے کے چار درجات کے ساتھ دکھاتا ہے۔ ملازمین ٹیبل سے گراف کے عمودی حصے ہیں۔ EMP. ہستی "ملازم" اپنے آپ سے تعلق "سبمٹس" (رپورٹ ٹو) کے ذریعہ منسلک ہے۔ گراف کی شرائط میں، ایک لنک ایک کنارے (EDGE) ہے جو ملازمین کے نوڈس (NODEs) کو جوڑتا ہے۔

ایس کیو ایل سرور 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 کے ماتحت

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف
اب اسی ڈیٹا کی نمائندگی کو گراف کی شکل میں دیکھتے ہیں۔ EMPLOYEE نوڈ میں کئی صفات ہیں اور یہ خود سے ایک "سبمٹس" رشتہ (EmplReportsTo) سے منسلک ہے۔ EmplReportsTo تعلق کا نام ہے۔

ایج ٹیبل (EDGE) میں بھی اوصاف ہو سکتے ہیں۔

ایس کیو ایل سرور 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 ایک رشتہ دار جدول سے ڈیٹا داخل کرتا ہے۔ EMP.

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

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف
ایک خصوصی کالم میں نوڈ ٹیبل میں $node_id_* میزبان ID JSON کے بطور محفوظ ہے۔ اس جدول کے بقیہ کالم نوڈ کی صفات پر مشتمل ہیں۔

کنارے بنائیں (EDGE)

ایج ٹیبل بنانا نوڈ ٹیبل بنانے کے مترادف ہے، سوائے کلیدی لفظ کے AS EDGE.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف

اب آئیے کالم استعمال کرنے والے ملازمین کے درمیان تعلقات کی وضاحت کرتے ہیں۔ EMPNO и ایم جی آر. org چارٹ واضح طور پر دکھاتا ہے کہ کیسے لکھنا ہے۔ 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%'

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف

ایس ایس ایم ایس

گراف سے متعلق اشیاء گراف ٹیبلز فولڈر میں واقع ہیں۔ نوڈ ٹیبل آئیکن کو ڈاٹ کے ساتھ نشان زد کیا گیا ہے، اور کنارے کی میز کے آئیکن کو دو جڑے ہوئے دائروں سے نشان زد کیا گیا ہے (جو تھوڑا سا شیشے کی طرح لگتا ہے)۔

ایس کیو ایل سرور 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'

ایس کیو ایل سرور 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'

ایس کیو ایل سرور 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'

ایس کیو ایل سرور 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)

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف

حاصل يہ ہوا

ایس کیو ایل سرور 2017 نے خود کو مختلف قسم کے کاروباری IT ضروریات کے لیے ایک مکمل انٹرپرائز حل کے طور پر قائم کیا ہے۔ SQL گراف کا پہلا ورژن بہت امید افزا ہے۔ یہاں تک کہ کچھ حدود کے باوجود، گراف کے امکانات کو تلاش کرنے کے لیے پہلے سے ہی کافی فعالیت موجود ہے۔

SQL گراف کی فعالیت مکمل طور پر SQL انجن میں مربوط ہے۔ تاہم، جیسا کہ پہلے ہی ذکر کیا گیا ہے، ایس کیو ایل سرور 2017 میں درج ذیل حدود ہیں:

پولیمورفزم کی کوئی حمایت نہیں۔

  • صرف یک طرفہ روابط کی حمایت کی جاتی ہے۔
  • Edges اپ ڈیٹ کے ذریعے اپنے $from_id اور $to_id کالمز کو اپ ڈیٹ نہیں کر سکتے ہیں۔
  • عبوری بندش کی حمایت نہیں کی جاتی ہے، لیکن وہ CTEs کا استعمال کرتے ہوئے حاصل کی جا سکتی ہیں۔
  • ان میموری OLTP اشیاء کے لیے محدود تعاون۔
  • عارضی میزیں (سسٹم-ورژنڈ ٹیمپورل ٹیبل)، عارضی مقامی اور عالمی میزیں تعاون یافتہ نہیں ہیں۔
  • ٹیبل کی اقسام اور ٹیبل متغیرات کو NODE یا EDGE قرار نہیں دیا جا سکتا۔
  • کراس ڈیٹا بیس کے سوالات تعاون یافتہ نہیں ہیں۔
  • ریگولر ٹیبلز کو گراف ٹیبلز میں تبدیل کرنے کا کوئی سیدھا راستہ یا کسی قسم کا وزرڈ (وزرڈ) نہیں ہے۔
  • گراف دکھانے کے لیے کوئی GUI نہیں ہے، لیکن پاور BI استعمال کیا جا سکتا ہے۔

ایس کیو ایل سرور 2017 گراف ڈیٹا بیس کا تعارف

مزید پڑھ:

ماخذ: www.habr.com