ಕೋರ್ಸ್ ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು
ಡೇಟಾಬೇಸ್ ವೃತ್ತಿಪರರಿಗೆ ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳು ಪ್ರಮುಖ ತಂತ್ರಜ್ಞಾನವಾಗಿದೆ. ನಾನು ಈ ಪ್ರದೇಶದಲ್ಲಿ ಆವಿಷ್ಕಾರಗಳು ಮತ್ತು ಹೊಸ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಅನುಸರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ ಮತ್ತು ಸಂಬಂಧಿತ ಮತ್ತು NoSQL ಡೇಟಾಬೇಸ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ ನಂತರ, ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳ ಪಾತ್ರವು ಹೆಚ್ಚು ಹೆಚ್ಚು ಆಗುತ್ತಿದೆ ಎಂದು ನಾನು ನೋಡುತ್ತೇನೆ. ಸಂಕೀರ್ಣ ಕ್ರಮಾನುಗತ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಸಾಂಪ್ರದಾಯಿಕ ಡೇಟಾಬೇಸ್ಗಳು ಮಾತ್ರವಲ್ಲದೆ NoSQL ಸಹ ನಿಷ್ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ. ಆಗಾಗ್ಗೆ, ಲಿಂಕ್ ಮಟ್ಟಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಡೇಟಾಬೇಸ್ನ ಗಾತ್ರದಲ್ಲಿ ಹೆಚ್ಚಳದೊಂದಿಗೆ, ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ಇಳಿಕೆ ಕಂಡುಬರುತ್ತದೆ. ಮತ್ತು ಸಂಬಂಧಗಳು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗುತ್ತಿದ್ದಂತೆ, ಸೇರ್ಪಡೆಗಳ ಸಂಖ್ಯೆಯೂ ಹೆಚ್ಚಾಗುತ್ತದೆ.
ಸಹಜವಾಗಿ, ಸಂಬಂಧಿತ ಮಾದರಿಯಲ್ಲಿ ಕ್ರಮಾನುಗತಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪರಿಹಾರಗಳಿವೆ (ಉದಾಹರಣೆಗೆ, ಪುನರಾವರ್ತಿತ CTE ಗಳನ್ನು ಬಳಸುವುದು), ಆದರೆ ಇವುಗಳು ಇನ್ನೂ ಪರಿಹಾರಗಳಾಗಿವೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, SQL ಸರ್ವರ್ ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳ ಕಾರ್ಯಚಟುವಟಿಕೆಯು ಬಹು ಹಂತದ ಶ್ರೇಣಿಯನ್ನು ನಿಭಾಯಿಸಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಡೇಟಾ ಮಾದರಿ ಮತ್ತು ಪ್ರಶ್ನೆಗಳೆರಡನ್ನೂ ಸರಳೀಕರಿಸಲಾಗಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅವುಗಳ ದಕ್ಷತೆಯು ಹೆಚ್ಚಾಗುತ್ತದೆ. ಗಮನಾರ್ಹವಾಗಿ ಕೋಡ್ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳು ಸಂಕೀರ್ಣ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಅಭಿವ್ಯಕ್ತಿಶೀಲ ಭಾಷೆಯಾಗಿದೆ. ಸಾಮಾಜಿಕ ನೆಟ್ವರ್ಕ್ಗಳು, ವಂಚನೆ-ವಿರೋಧಿ ವ್ಯವಸ್ಥೆಗಳು, ಐಟಿ ನೆಟ್ವರ್ಕ್ ವಿಶ್ಲೇಷಣೆ, ಸಾಮಾಜಿಕ ಶಿಫಾರಸುಗಳು, ಉತ್ಪನ್ನ ಮತ್ತು ವಿಷಯ ಶಿಫಾರಸುಗಳಂತಹ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ಈಗಾಗಲೇ ಐಟಿ ಉದ್ಯಮದಲ್ಲಿ ವ್ಯಾಪಕವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
SQL ಸರ್ವರ್ನಲ್ಲಿನ ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ ಕಾರ್ಯಚಟುವಟಿಕೆಯು ಡೇಟಾವು ಹೆಚ್ಚು ಅಂತರ್ಸಂಪರ್ಕಿತವಾಗಿರುವ ಮತ್ತು ಉತ್ತಮವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸಂಬಂಧಗಳನ್ನು ಹೊಂದಿರುವ ಸನ್ನಿವೇಶಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ.
ಗ್ರಾಫ್ ಡೇಟಾ ಮಾದರಿ
ಗ್ರಾಫ್ ಎನ್ನುವುದು ಶೃಂಗಗಳು (ನೋಡ್ಗಳು, ನೋಡ್) ಮತ್ತು ಅಂಚುಗಳ (ಸಂಬಂಧಗಳು, ಅಂಚು) ಒಂದು ಗುಂಪಾಗಿದೆ. ಶೃಂಗಗಳು ಘಟಕಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ, ಮತ್ತು ಅಂಚುಗಳು ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುವ ಗುಣಲಕ್ಷಣಗಳ ಲಿಂಕ್ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ.
ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ ಘಟಕಗಳನ್ನು ಗ್ರಾಫ್ ಸಿದ್ಧಾಂತದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಿದಂತೆ ಗ್ರಾಫ್ ಆಗಿ ರೂಪಿಸುತ್ತದೆ. ಡೇಟಾ ರಚನೆಗಳು ಶೃಂಗಗಳು ಮತ್ತು ಅಂಚುಗಳಾಗಿವೆ. ಗುಣಲಕ್ಷಣಗಳು ಶೃಂಗಗಳು ಮತ್ತು ಅಂಚುಗಳ ಗುಣಲಕ್ಷಣಗಳಾಗಿವೆ. ಸಂಪರ್ಕವು ಶೃಂಗಗಳ ಸಂಪರ್ಕವಾಗಿದೆ.
ಇತರ ಡೇಟಾ ಮಾದರಿಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳು ಘಟಕಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳಿಗೆ ಆದ್ಯತೆ ನೀಡುತ್ತವೆ. ಆದ್ದರಿಂದ, ವಿದೇಶಿ ಕೀಲಿಗಳನ್ನು ಬಳಸಿ ಅಥವಾ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಸಂಬಂಧಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ಕೇವಲ ಶೃಂಗ ಮತ್ತು ಅಂಚಿನ ಅಮೂರ್ತತೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂಕೀರ್ಣ ಡೇಟಾ ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿದೆ.
ಇಂದಿನ ಜಗತ್ತಿನಲ್ಲಿ, ಮಾಡೆಲಿಂಗ್ ಸಂಬಂಧಗಳಿಗೆ ಹೆಚ್ಚು ಹೆಚ್ಚು ಅತ್ಯಾಧುನಿಕ ತಂತ್ರಗಳು ಬೇಕಾಗುತ್ತವೆ. ಮಾದರಿ ಸಂಬಂಧಗಳಿಗೆ, SQL ಸರ್ವರ್ 2017 ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ. ಗ್ರಾಫ್ನ ಶೃಂಗಗಳು ಮತ್ತು ಅಂಚುಗಳನ್ನು ಹೊಸ ರೀತಿಯ ಕೋಷ್ಟಕಗಳಾಗಿ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ: NODE ಮತ್ತು EDGE. ಗ್ರಾಫ್ ಪ್ರಶ್ನೆಗಳು MATCH() ಎಂಬ ಹೊಸ T-SQL ಕಾರ್ಯವನ್ನು ಬಳಸುತ್ತವೆ. ಈ ಕಾರ್ಯವನ್ನು SQL ಸರ್ವರ್ 2017 ರಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿರುವುದರಿಂದ, ಯಾವುದೇ ಡೇಟಾಬೇಸ್ ಪರಿವರ್ತನೆಯ ಅಗತ್ಯವಿಲ್ಲದೇ ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ ಇದನ್ನು ಬಳಸಬಹುದು.
ಗ್ರಾಫ್ ಮಾದರಿಯ ಪ್ರಯೋಜನಗಳು
ಇತ್ತೀಚಿನ ದಿನಗಳಲ್ಲಿ, ವ್ಯವಹಾರಗಳು ಮತ್ತು ಬಳಕೆದಾರರು ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತಿರುವಾಗ, ಹೆಚ್ಚು ಹೆಚ್ಚು ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬಯಸುತ್ತಾರೆ. ಡೇಟಾದ ಗ್ರಾಫ್ ಪ್ರಾತಿನಿಧ್ಯವು ಸಂಕೀರ್ಣ ಸಂಬಂಧಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನುಕೂಲಕರವಾದ ವಿಧಾನವನ್ನು ನೀಡುತ್ತದೆ. ಈ ವಿಧಾನವು ಅನೇಕ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶದಲ್ಲಿ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಭವಿಷ್ಯದಲ್ಲಿ ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳಿಂದ ಅನೇಕ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತವೆ ಎಂದು ತೋರುತ್ತಿದೆ.
ಡೇಟಾ ಮಾಡೆಲಿಂಗ್: ಸಂಬಂಧಿತದಿಂದ ಗ್ರಾಫ್ ಮಾಡೆಲಿಂಗ್ಗೆ
ಉದಾಹರಣೆಗೆ
ಉದ್ಯೋಗಿಗಳ ಶ್ರೇಣಿಯನ್ನು ಹೊಂದಿರುವ ಸಾಂಸ್ಥಿಕ ರಚನೆಯ ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ: ಉದ್ಯೋಗಿ ವ್ಯವಸ್ಥಾಪಕರಿಗೆ ವರದಿ ಮಾಡುತ್ತಾರೆ, ವ್ಯವಸ್ಥಾಪಕರು ಹಿರಿಯ ವ್ಯವಸ್ಥಾಪಕರಿಗೆ ವರದಿ ಮಾಡುತ್ತಾರೆ, ಇತ್ಯಾದಿ. ನಿರ್ದಿಷ್ಟ ಕಂಪನಿಯನ್ನು ಅವಲಂಬಿಸಿ, ಈ ಕ್ರಮಾನುಗತದಲ್ಲಿ ಯಾವುದೇ ಸಂಖ್ಯೆಯ ಹಂತಗಳು ಇರಬಹುದು. ಆದರೆ ಹಂತಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚಾದಂತೆ, ಸಂಬಂಧಿತ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಬಂಧಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗುತ್ತದೆ. ಉದ್ಯೋಗಿಗಳ ಕ್ರಮಾನುಗತ, ಮಾರ್ಕೆಟಿಂಗ್ ಅಥವಾ ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಸಂಪರ್ಕಗಳಲ್ಲಿನ ಕ್ರಮಾನುಗತವನ್ನು ಕಲ್ಪಿಸುವುದು ತುಂಬಾ ಕಷ್ಟ. ವಿವಿಧ ಹಂತದ ಕ್ರಮಾನುಗತವನ್ನು ನಿರ್ವಹಿಸುವ ಸಮಸ್ಯೆಯನ್ನು SQL ಗ್ರಾಫ್ ಹೇಗೆ ಪರಿಹರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡೋಣ.
ಈ ಉದಾಹರಣೆಗಾಗಿ, ಸರಳ ಡೇಟಾ ಮಾದರಿಯನ್ನು ಮಾಡೋಣ. ಉದ್ಯೋಗಿಗಳ ಕೋಷ್ಟಕವನ್ನು ರಚಿಸಿ ಇಎಂಪಿ ಐಡಿಯೊಂದಿಗೆ EMPNO ಮತ್ತು ಕಾಲಮ್ ಎಂ.ಜಿ.ಆರ್ನೌಕರನ ಮುಖ್ಯಸ್ಥ (ಮ್ಯಾನೇಜರ್) ನ ID ಯನ್ನು ಸೂಚಿಸುವ A. ಶ್ರೇಣಿಯ ಬಗ್ಗೆ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಈ ಕೋಷ್ಟಕದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಮತ್ತು ಕಾಲಮ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಶ್ನಿಸಬಹುದು EMPNO и ಎಂ.ಜಿ.ಆರ್.
ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರವು ಹೆಚ್ಚು ಪರಿಚಿತ ರೂಪದಲ್ಲಿ ನಾಲ್ಕು ಹಂತದ ಗೂಡುಕಟ್ಟುವಿಕೆಯೊಂದಿಗೆ ಅದೇ ಆರ್ಗ್ ಚಾರ್ಟ್ ಮಾದರಿಯನ್ನು ತೋರಿಸುತ್ತದೆ. ನೌಕರರು ಟೇಬಲ್ನಿಂದ ಗ್ರಾಫ್ನ ಶೃಂಗಗಳು ಇಎಂಪಿ. "ಉದ್ಯೋಗಿ" ಎಂಬ ಅಸ್ತಿತ್ವವು "ಸಲ್ಲಿಸುತ್ತದೆ" (ವರದಿಗಳು) ಸಂಬಂಧದಿಂದ ಸ್ವತಃ ಲಿಂಕ್ ಆಗಿದೆ. ಗ್ರಾಫ್ ಪರಿಭಾಷೆಯಲ್ಲಿ, ಲಿಂಕ್ ಎನ್ನುವುದು ಉದ್ಯೋಗಿಗಳ ನೋಡ್ಗಳನ್ನು (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 ಗೆ ಅಧೀನವಾಗಿದೆ
ಈಗ ಅದೇ ಡೇಟಾದ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಗ್ರಾಫ್ ರೂಪದಲ್ಲಿ ನೋಡೋಣ. ಉದ್ಯೋಗಿ ನೋಡ್ ಹಲವಾರು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು "ಸಲ್ಲಿಸುತ್ತದೆ" ಸಂಬಂಧದಿಂದ (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 и ಎಂ.ಜಿ.ಆರ್. ಆರ್ಗ್ ಚಾರ್ಟ್ ಹೇಗೆ ಬರೆಯಬೇಕೆಂದು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುತ್ತದೆ ಸೇರಿಸಿ.
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
- ಆಗಿದೆ_ನೋಡ್
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 ಸರ್ವರ್ 2017 ವಿವಿಧ ವ್ಯಾಪಾರ ಐಟಿ ಅಗತ್ಯಗಳಿಗಾಗಿ ಸಂಪೂರ್ಣ ಉದ್ಯಮ ಪರಿಹಾರವಾಗಿ ಸ್ಥಾಪಿಸಿದೆ. SQL ಗ್ರಾಫ್ನ ಮೊದಲ ಆವೃತ್ತಿಯು ಬಹಳ ಭರವಸೆಯಿದೆ. ಕೆಲವು ಮಿತಿಗಳ ಹೊರತಾಗಿಯೂ, ಗ್ರಾಫ್ಗಳ ಸಾಧ್ಯತೆಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಈಗಾಗಲೇ ಸಾಕಷ್ಟು ಕ್ರಿಯಾತ್ಮಕತೆ ಇದೆ.
SQL ಗ್ರಾಫ್ ಕಾರ್ಯವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ SQL ಎಂಜಿನ್ಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಈಗಾಗಲೇ ಹೇಳಿದಂತೆ, SQL ಸರ್ವರ್ 2017 ಕೆಳಗಿನ ಮಿತಿಗಳನ್ನು ಹೊಂದಿದೆ:
ಬಹುರೂಪತೆಗೆ ಬೆಂಬಲವಿಲ್ಲ.
- ಏಕ ದಿಕ್ಕಿನ ಲಿಂಕ್ಗಳನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ.
- ಎಡ್ಜ್ಗಳು ತಮ್ಮ $from_id ಮತ್ತು $to_id ಕಾಲಮ್ಗಳನ್ನು UPDATE ಮೂಲಕ ನವೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
- ಟ್ರಾನ್ಸಿಟಿವ್ ಮುಚ್ಚುವಿಕೆಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅವುಗಳನ್ನು CTE ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪಡೆಯಬಹುದು.
- ಇನ್-ಮೆಮೊರಿ OLTP ಆಬ್ಜೆಕ್ಟ್ಗಳಿಗೆ ಸೀಮಿತ ಬೆಂಬಲ.
- ತಾತ್ಕಾಲಿಕ ಕೋಷ್ಟಕಗಳು (ಸಿಸ್ಟಮ್-ಆವೃತ್ತಿಯ ತಾತ್ಕಾಲಿಕ ಕೋಷ್ಟಕ), ತಾತ್ಕಾಲಿಕ ಸ್ಥಳೀಯ ಮತ್ತು ಜಾಗತಿಕ ಕೋಷ್ಟಕಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ.
- ಟೇಬಲ್ ಪ್ರಕಾರಗಳು ಮತ್ತು ಟೇಬಲ್ ವೇರಿಯೇಬಲ್ಗಳನ್ನು NODE ಅಥವಾ EDGE ಎಂದು ಘೋಷಿಸಲಾಗುವುದಿಲ್ಲ.
- ಕ್ರಾಸ್ ಡೇಟಾಬೇಸ್ ಪ್ರಶ್ನೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ.
- ಸಾಮಾನ್ಯ ಕೋಷ್ಟಕಗಳನ್ನು ಗ್ರಾಫ್ ಕೋಷ್ಟಕಗಳಾಗಿ ಪರಿವರ್ತಿಸಲು ಯಾವುದೇ ನೇರ ಮಾರ್ಗ ಅಥವಾ ಕೆಲವು ರೀತಿಯ ಮಾಂತ್ರಿಕ (ಮಾಂತ್ರಿಕ) ಇಲ್ಲ.
- ಗ್ರಾಫ್ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಯಾವುದೇ GUI ಇಲ್ಲ, ಆದರೆ ಪವರ್ ಬಿಐ ಅನ್ನು ಬಳಸಬಹುದು.
ಮತ್ತಷ್ಟು ಓದು:
ಮೂಲ: www.habr.com