பாடநெறி தொடங்கும் முன்
தரவுத்தள நிபுணர்களுக்கு வரைபட தரவுத்தளங்கள் ஒரு முக்கியமான தொழில்நுட்பமாகும். நான் இந்த பகுதியில் புதுமைகள் மற்றும் புதிய தொழில்நுட்பங்களைப் பின்பற்ற முயற்சிக்கிறேன் மற்றும் தொடர்புடைய மற்றும் NoSQL தரவுத்தளங்களுடன் பணிபுரிந்த பிறகு, வரைபட தரவுத்தளங்களின் பங்கு மேலும் மேலும் அதிகரித்து வருவதை நான் காண்கிறேன். சிக்கலான படிநிலை தரவுகளுடன் பணிபுரியும் போது, பாரம்பரிய தரவுத்தளங்கள் மட்டுமல்ல, NoSQL கூட பயனற்றவை. பெரும்பாலும், இணைப்பு நிலைகளின் எண்ணிக்கை மற்றும் தரவுத்தளத்தின் அளவு அதிகரிப்புடன், செயல்திறன் குறைகிறது. உறவுகள் மிகவும் சிக்கலானதாக மாறும்போது, சேர்பவர்களின் எண்ணிக்கையும் அதிகரிக்கிறது.
நிச்சயமாக, தொடர்புடைய மாதிரியில் படிநிலைகளுடன் பணிபுரிவதற்கான தீர்வுகள் உள்ளன (உதாரணமாக, சுழல்நிலை CTEகளைப் பயன்படுத்துதல்), ஆனால் இவை இன்னும் தீர்வுகள். அதே நேரத்தில், SQL சர்வர் கிராஃப் தரவுத்தளங்களின் செயல்பாடு, பல நிலை படிநிலைகளைக் கையாளுவதை எளிதாக்குகிறது. தரவு மாதிரி மற்றும் வினவல்கள் இரண்டும் எளிமைப்படுத்தப்பட்டுள்ளன, எனவே அவற்றின் செயல்திறன் அதிகரிக்கப்படுகிறது. குறியீட்டின் அளவைக் கணிசமாகக் குறைக்கிறது.
வரைபட தரவுத்தளங்கள் சிக்கலான அமைப்புகளைக் குறிக்கும் ஒரு வெளிப்படையான மொழியாகும். சமூக வலைப்பின்னல்கள், மோசடி எதிர்ப்பு அமைப்புகள், IT நெட்வொர்க் பகுப்பாய்வு, சமூக பரிந்துரைகள், தயாரிப்பு மற்றும் உள்ளடக்க பரிந்துரைகள் போன்ற பகுதிகளில் இந்த தொழில்நுட்பம் ஏற்கனவே IT துறையில் பரவலாகப் பயன்படுத்தப்படுகிறது.
SQL சர்வரில் உள்ள வரைபட தரவுத்தள செயல்பாடு, தரவு மிகவும் ஒன்றோடொன்று இணைக்கப்பட்ட மற்றும் நன்கு வரையறுக்கப்பட்ட உறவுகளைக் கொண்ட காட்சிகளுக்கு ஏற்றது.
வரைபட தரவு மாதிரி
வரைபடம் என்பது செங்குத்துகள் (முனைகள், முனை) மற்றும் விளிம்புகள் (உறவுகள், விளிம்பு) ஆகியவற்றின் தொகுப்பாகும். செங்குத்துகள் நிறுவனங்களைக் குறிக்கின்றன, மேலும் விளிம்புகள் அதன் பண்புக்கூறுகள் தகவலைக் கொண்டிருக்கும் இணைப்புகளைக் குறிக்கின்றன.
வரைபடக் கோட்பாட்டில் வரையறுக்கப்பட்டுள்ளபடி வரைபட தரவுத்தளமானது நிறுவனங்களை வரைபடமாக மாதிரியாக்குகிறது. தரவு கட்டமைப்புகள் செங்குத்துகள் மற்றும் விளிம்புகள். பண்புக்கூறுகள் செங்குத்துகள் மற்றும் விளிம்புகளின் பண்புகள். இணைப்பு என்பது செங்குத்துகளின் இணைப்பு.
மற்ற தரவு மாதிரிகள் போலல்லாமல், வரைபட தரவுத்தளங்கள் நிறுவனங்களுக்கு இடையிலான உறவுகளுக்கு முன்னுரிமை அளிக்கின்றன. எனவே, வெளிநாட்டு விசைகளைப் பயன்படுத்தி அல்லது வேறு வழியில் உறவுகளைக் கணக்கிட வேண்டிய அவசியமில்லை. உச்சி மற்றும் விளிம்பு சுருக்கங்களை மட்டுமே பயன்படுத்தி சிக்கலான தரவு மாதிரிகளை உருவாக்க முடியும்.
இன்றைய உலகில், மாடலிங் உறவுகளுக்கு மேலும் மேலும் அதிநவீன நுட்பங்கள் தேவைப்படுகின்றன. மாதிரி உறவுகளுக்கு, SQL சர்வர் 2017 வரைபட தரவுத்தள திறன்களை வழங்குகிறது. வரைபடத்தின் முனைகள் மற்றும் விளிம்புகள் புதிய வகை அட்டவணைகளாகக் குறிப்பிடப்படுகின்றன: NODE மற்றும் EDGE. வரைபட வினவல்கள் MATCH() எனப்படும் புதிய T-SQL செயல்பாட்டைப் பயன்படுத்துகின்றன. இந்த செயல்பாடு SQL சர்வர் 2017 இல் கட்டமைக்கப்பட்டுள்ளதால், எந்த தரவுத்தள மாற்றமும் தேவையில்லாமல் உங்கள் தற்போதைய தரவுத்தளங்களில் இதைப் பயன்படுத்தலாம்.
வரைபட மாதிரியின் நன்மைகள்
இப்போதெல்லாம், வணிகங்களும் பயனர்களும் அதிக செயல்திறன் மற்றும் நம்பகத்தன்மையை எதிர்பார்க்கும் அதே வேளையில், மேலும் மேலும் தரவுகளுடன் செயல்படும் பயன்பாடுகளைக் கோருகின்றனர். தரவுகளின் வரைபடப் பிரதிநிதித்துவம் சிக்கலான உறவுகளைக் கையாள ஒரு வசதியான வழியை வழங்குகிறது. இந்த அணுகுமுறை பல சிக்கல்களைத் தீர்க்கிறது மற்றும் கொடுக்கப்பட்ட சூழலில் முடிவுகளைப் பெற உதவுகிறது.
எதிர்காலத்தில் வரைபட தரவுத்தளங்களிலிருந்து பல பயன்பாடுகள் பயனடையும் போல் தெரிகிறது.
டேட்டா மாடலிங்: ரிலேஷனலில் இருந்து கிராஃப் மாடலிங் வரை
உதாரணமாக
ஊழியர்களின் படிநிலையுடன் கூடிய நிறுவன கட்டமைப்பின் உதாரணத்தைப் பார்ப்போம்: ஒரு பணியாளர் ஒரு மேலாளருக்கு அறிக்கை செய்கிறார், ஒரு மேலாளர் ஒரு மூத்த மேலாளரிடம் அறிக்கை செய்கிறார் மற்றும் பல. குறிப்பிட்ட நிறுவனத்தைப் பொறுத்து, இந்தப் படிநிலையில் எத்தனை நிலைகள் வேண்டுமானாலும் இருக்கலாம். ஆனால் நிலைகளின் எண்ணிக்கை அதிகரிக்கும்போது, தொடர்புடைய தரவுத்தளத்தில் உறவுகளைக் கணக்கிடுவது மேலும் மேலும் கடினமாகிறது. ஊழியர்களின் படிநிலை, சந்தைப்படுத்தல் அல்லது சமூக ஊடக இணைப்புகளில் உள்ள படிநிலையை கற்பனை செய்வது மிகவும் கடினம். SQL வரைபடம் பல்வேறு நிலைகளின் படிநிலையைக் கையாள்வதில் உள்ள சிக்கலை எவ்வாறு தீர்க்கும் என்பதைப் பார்ப்போம்.
இந்த உதாரணத்திற்கு, ஒரு எளிய தரவு மாதிரியை உருவாக்குவோம். பணியாளர்களின் அட்டவணையை உருவாக்கவும் ஈ.எம்.பி ஐடியுடன் EMPNO மற்றும் நெடுவரிசை எம்.ஜி.ஆர்A பணியாளரின் தலைவரின் (மேலாளர்) ஐடியை சுட்டிக்காட்டுகிறது. படிநிலை பற்றிய அனைத்து தகவல்களும் இந்த அட்டவணையில் சேமிக்கப்பட்டு நெடுவரிசைகளைப் பயன்படுத்தி வினவலாம் EMPNO и எம்.ஜி.ஆர்.
பின்வரும் வரைபடமானது, மிகவும் பழக்கமான வடிவத்தில் நான்கு நிலைகளில் கூடு கட்டும் அதே org விளக்கப்பட மாதிரியைக் காட்டுகிறது. பணியாளர்கள் அட்டவணையில் இருந்து வரைபடத்தின் முனைகளாகும் ஈ.எம்.பி. "பணியாளர்" என்பது "சமர்ப்பிக்கிறது" (ReportsTo) என்ற உறவின் மூலம் தன்னுடன் இணைக்கப்பட்டுள்ளது. வரைபட அடிப்படையில், ஒரு இணைப்பு என்பது ஊழியர்களின் முனைகளை (NODEகள்) இணைக்கும் விளிம்பு (EDGE) ஆகும்.
வழக்கமான அட்டவணையை உருவாக்குவோம் ஈ.எம்.பி மேலே உள்ள வரைபடத்தின்படி மதிப்புகளைச் சேர்க்கவும்.
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க்கு அடிபணிந்தது
இப்போது வரைபட வடிவில் அதே தரவுகளின் பிரதிநிதித்துவத்தைப் பார்ப்போம். EMPLOYEE கணு பல பண்புக்கூறுகளைக் கொண்டுள்ளது மற்றும் "சமர்ப்பிக்கிறது" உறவால் (EmplReportsTo) இணைக்கப்பட்டுள்ளது. EmplReportsTo என்பது உறவின் பெயர்.
விளிம்பு அட்டவணையில் (EDGE) பண்புக்கூறுகளும் இருக்கலாம்.
ஒரு முனை அட்டவணை 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 INTO EmpNode(EMPNO,ENAME,MGR,DNO) select empno,ename,MGR,dno from emp
ஒரு சிறப்பு நெடுவரிசையில் முனை அட்டவணையில் $node_id_*
ஹோஸ்ட் ஐடி JSON ஆக சேமிக்கப்படுகிறது. இந்த அட்டவணையின் மீதமுள்ள நெடுவரிசைகளில் முனையின் பண்புக்கூறுகள் உள்ளன.
விளிம்புகளை உருவாக்கு (EDGE)
முனை அட்டவணையை உருவாக்குவது முனை அட்டவணையை உருவாக்குவதைப் போன்றது, முக்கிய சொல்லைத் தவிர எட்ஜ்.
CREATE TABLE empReportsTo(Deptno int) AS EDGE
இப்போது நெடுவரிசைகளைப் பயன்படுத்தி ஊழியர்களுக்கு இடையிலான உறவுகளை வரையறுப்போம் EMPNO и எம்.ஜி.ஆர். எப்படி எழுதுவது என்பதை org விளக்கப்படம் தெளிவாகக் காட்டுகிறது செருகு.
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
இரண்டு புதிய நெடுவரிசைகள் உள்ளன:
- is_edge
- is_node
SELECT t.is_edge,t.is_node,*
FROM sys.tables t
WHERE name like 'emp%'
எஸ்.எஸ்.எம்.எஸ்
வரைபடங்கள் தொடர்பான பொருள்கள் வரைபட அட்டவணைகள் கோப்புறையில் அமைந்துள்ளன. முனை அட்டவணை ஐகான் ஒரு புள்ளியுடன் குறிக்கப்பட்டுள்ளது, மேலும் விளிம்பு அட்டவணை ஐகான் இரண்டு இணைக்கப்பட்ட வட்டங்களுடன் குறிக்கப்பட்டுள்ளது (இது கண்ணாடிகள் போல் தெரிகிறது).
மேட்ச் வெளிப்பாடு
வெளிப்பாடு போட்டி CQL இலிருந்து எடுக்கப்பட்டது (சைபர் வினவல் மொழி). வரைபடத்தின் பண்புகளை வினவுவதற்கு இது ஒரு திறமையான வழியாகும். 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'
பின்வரும் வினவல் ஸ்மித்தின் பணியாளர்கள் மற்றும் இரண்டாம் நிலை மேலாளர்களைக் கண்டறிவதாகும். நீங்கள் சலுகையை அகற்றினால் எங்கே, பின்னர் அனைத்து ஊழியர்களும் இதன் விளைவாக காட்டப்படுவார்கள்.
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'
இறுதியாக, மூன்றாம் நிலை ஊழியர்கள் மற்றும் மேலாளர்களுக்கான கோரிக்கை.
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'
இப்போது ஸ்மித்தின் முதலாளிகளைப் பெறுவதற்கான திசையை மாற்றுவோம்.
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 பல்வேறு வணிக IT தேவைகளுக்கு ஒரு முழுமையான நிறுவன தீர்வாக தன்னை நிலைநிறுத்திக் கொண்டுள்ளது. SQL வரைபடத்தின் முதல் பதிப்பு மிகவும் நம்பிக்கைக்குரியது. சில வரம்புகள் இருந்தபோதிலும், வரைபடங்களின் சாத்தியக்கூறுகளை ஆராய போதுமான செயல்பாடு ஏற்கனவே உள்ளது.
SQL வரைபட செயல்பாடு SQL இன்ஜினில் முழுமையாக ஒருங்கிணைக்கப்பட்டுள்ளது. இருப்பினும், ஏற்கனவே குறிப்பிட்டுள்ளபடி, SQL சர்வர் 2017 பின்வரும் வரம்புகளைக் கொண்டுள்ளது:
பாலிமார்பிஸத்திற்கு ஆதரவு இல்லை.
- ஒரே திசை இணைப்புகள் மட்டுமே ஆதரிக்கப்படும்.
- UPDATE மூலம் விளிம்புகளால் $from_id மற்றும் $to_id நெடுவரிசைகளைப் புதுப்பிக்க முடியாது.
- இடைநிலை மூடல்கள் ஆதரிக்கப்படவில்லை, ஆனால் அவை CTEகளைப் பயன்படுத்தி பெறலாம்.
- இன்-மெமரி OLTP பொருள்களுக்கான வரையறுக்கப்பட்ட ஆதரவு.
- தற்காலிக அட்டவணைகள் (சிஸ்டம்-பதிப்பு தற்காலிக அட்டவணை), தற்காலிக உள்ளூர் மற்றும் உலகளாவிய அட்டவணைகள் ஆதரிக்கப்படாது.
- அட்டவணை வகைகள் மற்றும் அட்டவணை மாறிகள் NODE அல்லது EDGE என அறிவிக்க முடியாது.
- குறுக்கு தரவுத்தள வினவல்கள் ஆதரிக்கப்படவில்லை.
- வழக்கமான அட்டவணைகளை வரைபட அட்டவணைகளாக மாற்ற நேரடி வழி அல்லது சில வகையான வழிகாட்டி (விஜார்ட்) இல்லை.
- வரைபடங்களைக் காட்ட GUI இல்லை, ஆனால் Power BI ஐப் பயன்படுத்தலாம்.
மேலும் படிக்க:
ஆதாரம்: www.habr.com