KDB+ ಡೇಟಾಬೇಸ್: ಹಣಕಾಸುದಿಂದ ಫಾರ್ಮುಲಾ 1 ವರೆಗೆ

KDB+, ಕಂಪನಿಯ ಉತ್ಪನ್ನ KX ಕಿರಿದಾದ ವಲಯಗಳಲ್ಲಿ ವ್ಯಾಪಕವಾಗಿ ತಿಳಿದಿರುವ, ಅತ್ಯಂತ ವೇಗದ, ಸ್ತಂಭಾಕಾರದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸಮಯ ಸರಣಿಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ಆಧಾರದ ಮೇಲೆ ವಿಶ್ಲೇಷಣಾತ್ಮಕ ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಆರಂಭದಲ್ಲಿ, ಇದು ಹಣಕಾಸು ಉದ್ಯಮದಲ್ಲಿ ಬಹಳ ಜನಪ್ರಿಯವಾಗಿತ್ತು (ಮತ್ತು) - ಎಲ್ಲಾ ಟಾಪ್ 10 ಹೂಡಿಕೆ ಬ್ಯಾಂಕ್‌ಗಳು ಮತ್ತು ಅನೇಕ ಪ್ರಸಿದ್ಧ ಹೆಡ್ಜ್ ಫಂಡ್‌ಗಳು, ವಿನಿಮಯ ಕೇಂದ್ರಗಳು ಮತ್ತು ಇತರ ಸಂಸ್ಥೆಗಳು ಇದನ್ನು ಬಳಸುತ್ತವೆ. ಇತ್ತೀಚೆಗೆ, KX ತನ್ನ ಗ್ರಾಹಕರ ನೆಲೆಯನ್ನು ವಿಸ್ತರಿಸಲು ನಿರ್ಧರಿಸಿದೆ ಮತ್ತು ಈಗ ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾ ಇರುವ ಇತರ ಪ್ರದೇಶಗಳಲ್ಲಿ ಪರಿಹಾರಗಳನ್ನು ನೀಡಲು ನಿರ್ಧರಿಸಿದೆ, ಸಮಯ ಅಥವಾ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಆಯೋಜಿಸಲಾಗಿದೆ - ಟೆಲಿಕಾಂ, ಬಯೋಇನ್ಫರ್ಮ್ಯಾಟಿಕ್ಸ್, ಉತ್ಪಾದನೆ, ಇತ್ಯಾದಿ. ಅವರು ಫಾರ್ಮುಲಾ 1 ರಲ್ಲಿ ಆಸ್ಟನ್ ಮಾರ್ಟಿನ್ ರೆಡ್ ಬುಲ್ ರೇಸಿಂಗ್ ತಂಡದ ಪಾಲುದಾರರಾದರು, ಅಲ್ಲಿ ಅವರು ಕಾರ್ ಸಂವೇದಕಗಳಿಂದ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಮತ್ತು ಗಾಳಿ ಸುರಂಗ ಪರೀಕ್ಷೆಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತಾರೆ. ಈ ಲೇಖನದಲ್ಲಿ, KDB+ ನ ಯಾವ ವೈಶಿಷ್ಟ್ಯಗಳು ಅದನ್ನು ಸೂಪರ್-ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಮಾಡುತ್ತವೆ, ಕಂಪನಿಗಳು ಏಕೆ ಹೆಚ್ಚಿನ ಹಣವನ್ನು ಖರ್ಚು ಮಾಡಲು ಸಿದ್ಧವಾಗಿವೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ, ಅದು ನಿಜವಾಗಿಯೂ ಡೇಟಾಬೇಸ್ ಏಕೆ ಅಲ್ಲ ಎಂದು ನಾನು ನಿಮಗೆ ಹೇಳಲು ಬಯಸುತ್ತೇನೆ.
 
KDB+ ಡೇಟಾಬೇಸ್: ಹಣಕಾಸುದಿಂದ ಫಾರ್ಮುಲಾ 1 ವರೆಗೆ
 
ಈ ಲೇಖನದಲ್ಲಿ ನಾನು ಸಾಮಾನ್ಯವಾಗಿ KDB+ ಎಂದರೇನು, ಅದು ಯಾವ ಸಾಮರ್ಥ್ಯಗಳು ಮತ್ತು ಮಿತಿಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ದೊಡ್ಡ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಬಯಸುವ ಕಂಪನಿಗಳಿಗೆ ಅದರ ಪ್ರಯೋಜನಗಳು ಏನೆಂದು ಹೇಳಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ. ನಾನು KDB+ ಅನುಷ್ಠಾನದ ವಿವರಗಳಿಗೆ ಅಥವಾ ಅದರ Q ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ವಿವರಗಳಿಗೆ ಹೋಗುವುದಿಲ್ಲ. ಈ ಎರಡೂ ವಿಷಯಗಳು ಬಹಳ ವಿಶಾಲವಾಗಿವೆ ಮತ್ತು ಪ್ರತ್ಯೇಕ ಲೇಖನಗಳಿಗೆ ಅರ್ಹವಾಗಿವೆ. ಈ ವಿಷಯಗಳ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು code.kx.com ನಲ್ಲಿ ಕಾಣಬಹುದು, ಇದರಲ್ಲಿ Q - Q ಫಾರ್ ಮಾರ್ಟಲ್ಸ್ (ಕೆಳಗಿನ ಲಿಂಕ್ ನೋಡಿ) ಪುಸ್ತಕವೂ ಸೇರಿದೆ.

ಕೆಲವು ನಿಯಮಗಳು

  • ಇನ್-ಮೆಮೊರಿ ಡೇಟಾಬೇಸ್. ವೇಗವಾದ ಪ್ರವೇಶಕ್ಕಾಗಿ RAM ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಡೇಟಾಬೇಸ್. ಅಂತಹ ಡೇಟಾಬೇಸ್ನ ಪ್ರಯೋಜನಗಳು ಸ್ಪಷ್ಟವಾಗಿವೆ, ಆದರೆ ಅನಾನುಕೂಲಗಳು ಡೇಟಾ ನಷ್ಟದ ಸಾಧ್ಯತೆ ಮತ್ತು ಸರ್ವರ್ನಲ್ಲಿ ಸಾಕಷ್ಟು ಮೆಮೊರಿಯನ್ನು ಹೊಂದುವ ಅವಶ್ಯಕತೆಯಿದೆ.
  • ಸ್ತಂಭಾಕಾರದ ಡೇಟಾಬೇಸ್. ದಾಖಲೆಯ ಮೂಲಕ ದಾಖಲೆಯ ಬದಲಿಗೆ ಕಾಲಮ್ ಮೂಲಕ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಡೇಟಾಬೇಸ್. ಅಂತಹ ಡೇಟಾಬೇಸ್‌ನ ಮುಖ್ಯ ಪ್ರಯೋಜನವೆಂದರೆ ಒಂದು ಕಾಲಮ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಡಿಸ್ಕ್ ಮತ್ತು ಮೆಮೊರಿಯಲ್ಲಿ ಒಟ್ಟಿಗೆ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಇದು ಅದರ ಪ್ರವೇಶವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ವೇಗಗೊಳಿಸುತ್ತದೆ. ಪ್ರಶ್ನೆಯಲ್ಲಿ ಬಳಸದ ಕಾಲಮ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ಮುಖ್ಯ ಅನನುಕೂಲವೆಂದರೆ ದಾಖಲೆಗಳನ್ನು ಮಾರ್ಪಡಿಸುವುದು ಮತ್ತು ಅಳಿಸುವುದು ಕಷ್ಟ.
  • ಸಮಯದ ಸರಣಿ. ದಿನಾಂಕ ಅಥವಾ ಸಮಯದ ಕಾಲಮ್ನೊಂದಿಗೆ ಡೇಟಾ. ವಿಶಿಷ್ಟವಾಗಿ, ಅಂತಹ ಡೇಟಾಗೆ ಸಮಯದ ಆದೇಶವು ಮುಖ್ಯವಾಗಿದೆ, ಇದರಿಂದ ನೀವು ಯಾವ ದಾಖಲೆಯು ಪ್ರಸ್ತುತಕ್ಕೆ ಮುಂಚಿತವಾಗಿ ಅಥವಾ ಅನುಸರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸುಲಭವಾಗಿ ನಿರ್ಧರಿಸಬಹುದು ಅಥವಾ ದಾಖಲೆಗಳ ಕ್ರಮವನ್ನು ಅವಲಂಬಿಸಿರುವ ಕಾರ್ಯಗಳನ್ನು ಅನ್ವಯಿಸಬಹುದು. ಕ್ಲಾಸಿಕ್ ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನ ತತ್ತ್ವದ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ - ದಾಖಲೆಗಳ ಸಂಗ್ರಹವನ್ನು ಒಂದು ಸೆಟ್‌ನಂತೆ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ, ಅಲ್ಲಿ ದಾಖಲೆಗಳ ಕ್ರಮವನ್ನು ತಾತ್ವಿಕವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ.
  • ವೆಕ್ಟರ್. KDB+ ನ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಒಂದೇ ಪರಮಾಣು ಪ್ರಕಾರದ ಅಂಶಗಳ ಪಟ್ಟಿಯಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ಸಂಖ್ಯೆಗಳು. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಅಂಶಗಳ ಒಂದು ಶ್ರೇಣಿ. ಅರೇಗಳು, ಪಟ್ಟಿಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ವೆಕ್ಟರ್ ಪ್ರೊಸೆಸರ್ ಸೂಚನೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಾಂದ್ರವಾಗಿ ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ಸಂಸ್ಕರಿಸಬಹುದು.

 

ಐತಿಹಾಸಿಕ ಹಿನ್ನೆಲೆ

KX ಅನ್ನು 1993 ರಲ್ಲಿ ಆರ್ಥರ್ ವಿಟ್ನಿ ಅವರು ಸ್ಥಾಪಿಸಿದರು, ಅವರು ಈ ಹಿಂದೆ ಮೋರ್ಗನ್ ಸ್ಟಾನ್ಲಿ ಬ್ಯಾಂಕ್‌ನಲ್ಲಿ A+ ಭಾಷೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಿದರು, APL ನ ಉತ್ತರಾಧಿಕಾರಿ - ಇದು ಆರ್ಥಿಕ ಜಗತ್ತಿನಲ್ಲಿ ಅತ್ಯಂತ ಮೂಲ ಮತ್ತು ಒಂದು ಸಮಯದಲ್ಲಿ ಜನಪ್ರಿಯ ಭಾಷೆಯಾಗಿದೆ. ಸಹಜವಾಗಿ, KX ನಲ್ಲಿ, ಆರ್ಥರ್ ಅದೇ ಉತ್ಸಾಹದಲ್ಲಿ ಮುಂದುವರೆದರು ಮತ್ತು ಆಮೂಲಾಗ್ರ ಕನಿಷ್ಠೀಯತಾವಾದದ ಕಲ್ಪನೆಗಳಿಂದ ಮಾರ್ಗದರ್ಶಿಸಲ್ಪಟ್ಟ ವೆಕ್ಟರ್-ಕ್ರಿಯಾತ್ಮಕ ಭಾಷೆ K ಅನ್ನು ರಚಿಸಿದರು. ಕೆ ಕಾರ್ಯಕ್ರಮಗಳು ವಿರಾಮಚಿಹ್ನೆಗಳು ಮತ್ತು ವಿಶೇಷ ಅಕ್ಷರಗಳ ಜಂಬಲ್‌ನಂತೆ ಕಾಣುತ್ತವೆ, ಚಿಹ್ನೆಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ಅರ್ಥವು ಸಂದರ್ಭವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಕಾರ್ಯಾಚರಣೆಯು ಸಾಂಪ್ರದಾಯಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಅರ್ಥವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಈ ಕಾರಣದಿಂದಾಗಿ, ಒಂದು K ಪ್ರೋಗ್ರಾಂ ಕನಿಷ್ಠ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ-ಕೆಲವು ಸಾಲುಗಳು ಪಠ್ಯದ ಪುಟಗಳನ್ನು ಜಾವಾದಂತಹ ಮೌಖಿಕ ಭಾಷೆಯಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು-ಮತ್ತು ಅಲ್ಗಾರಿದಮ್‌ನ ಸೂಪರ್-ಕೇಂದ್ರೀಕೃತ ಅನುಷ್ಠಾನವಾಗಿದೆ.
 
ಕೊಟ್ಟಿರುವ ವ್ಯಾಕರಣದ ಪ್ರಕಾರ ಹೆಚ್ಚಿನ LL1 ಪಾರ್ಸರ್ ಜನರೇಟರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ K ಯಲ್ಲಿನ ಕಾರ್ಯ:

1. pp:{q:{(x;p3(),y)};r:$[-11=@x;$x;11=@x;q[`N;$*x];10=abs@@x;q[`N;x]  
2.   ($)~*x;(`P;p3 x 1);(1=#x)&11=@*x;pp[{(1#x;$[2=#x;;,:]1_x)}@*x]  
3.      (?)~*x;(`Q;pp[x 1]);(*)~*x;(`M;pp[x 1]);(+)~*x;(`MP;pp[x 1]);(!)~*x;(`Y;p3 x 1)  
4.      (2=#x)&(@x 1)in 100 101 107 7 -7h;($[(@x 1)in 100 101 107h;`Ff;`Fi];p3 x 1;pp[*x])  
5.      (|)~*x;`S,(pp'1_x);2=#x;`C,{@[@[x;-1+#x;{x,")"}];0;"(",]}({$[".s.C"~4#x;6_-2_x;x]}'pp'x);'`pp];  
6.   $[@r;r;($[1<#r;".s.";""],$*r),$[1<#r;"[",(";"/:1_r),"]";""]]}  

 ಆರ್ಥರ್ ಈ ತೀವ್ರ ದಕ್ಷತೆಯ ತತ್ವಶಾಸ್ತ್ರವನ್ನು KDB+ ನಲ್ಲಿ ಕನಿಷ್ಠ ದೇಹದ ಚಲನೆಗಳೊಂದಿಗೆ ಸಾಕಾರಗೊಳಿಸಿದರು, ಇದು 2003 ರಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿತು (ಹೆಸರಿನಲ್ಲಿ K ಅಕ್ಷರ ಎಲ್ಲಿಂದ ಬಂದಿದೆ ಎಂಬುದು ಈಗ ಸ್ಪಷ್ಟವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ) ಮತ್ತು K ಯ ನಾಲ್ಕನೇ ಆವೃತ್ತಿಯ ಇಂಟರ್ಪ್ರಿಟರ್ಗಿಂತ ಹೆಚ್ಚೇನೂ ಅಲ್ಲ. ಭಾಷೆ, ಹೆಚ್ಚು ಬಳಕೆದಾರ ಸ್ನೇಹಿ ಆವೃತ್ತಿಯನ್ನು K K ಯ ಮೇಲೆ ಸೇರಿಸಲಾಗಿದೆ Q. Q. SQL - QSQL ನ ನಿರ್ದಿಷ್ಟ ಉಪಭಾಷೆಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ - QSQL ಮತ್ತು ಇಂಟರ್ಪ್ರಿಟರ್ - ಸಿಸ್ಟಮ್ ಡೇಟಾ ಪ್ರಕಾರವಾಗಿ ಟೇಬಲ್‌ಗಳಿಗೆ ಬೆಂಬಲ, ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಸಾಧನಗಳು ಮೆಮೊರಿಯಲ್ಲಿ ಮತ್ತು ಡಿಸ್ಕ್ನಲ್ಲಿ, ಇತ್ಯಾದಿ.
 
ಆದ್ದರಿಂದ ಬಳಕೆದಾರರ ದೃಷ್ಟಿಕೋನದಿಂದ, KDB+ ಕೋಷ್ಟಕಗಳು ಮತ್ತು C# ನಿಂದ SQL-ತರಹದ LINQ-ಶೈಲಿಯ ಅಭಿವ್ಯಕ್ತಿಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಹೊಂದಿರುವ Q ಭಾಷಾ ಇಂಟರ್ಪ್ರಿಟರ್ ಆಗಿದೆ. ಇದು KDB+ ಮತ್ತು ಇತರ ಡೇಟಾಬೇಸ್‌ಗಳ ನಡುವಿನ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವಾಗಿದೆ ಮತ್ತು ಅದರ ಮುಖ್ಯ ಸ್ಪರ್ಧಾತ್ಮಕ ಪ್ರಯೋಜನವಾಗಿದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕಡೆಗಣಿಸಲಾಗುತ್ತದೆ. ಇದು ಡೇಟಾಬೇಸ್ ಅಲ್ಲ + ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಸಹಾಯಕ ಭಾಷೆ, ಆದರೆ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಶಕ್ತಿಯುತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ + ಡೇಟಾಬೇಸ್ ಕಾರ್ಯಗಳಿಗಾಗಿ ಅಂತರ್ನಿರ್ಮಿತ ಬೆಂಬಲ. KDB+ ನ ಎಲ್ಲಾ ಪ್ರಯೋಜನಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವಲ್ಲಿ ಈ ವ್ಯತ್ಯಾಸವು ನಿರ್ಣಾಯಕ ಪಾತ್ರವನ್ನು ವಹಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ…
 

ಗಾತ್ರ

ಆಧುನಿಕ ಮಾನದಂಡಗಳ ಪ್ರಕಾರ, KDB+ ಗಾತ್ರದಲ್ಲಿ ಸರಳವಾಗಿ ಸೂಕ್ಷ್ಮದರ್ಶಕವಾಗಿದೆ. ಇದು ಅಕ್ಷರಶಃ ಒಂದು ಉಪ-ಮೆಗಾಬೈಟ್ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್ ಮತ್ತು ಕೆಲವು ಸಿಸ್ಟಮ್ ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಒಂದು ಸಣ್ಣ ಪಠ್ಯ ಫೈಲ್ ಆಗಿದೆ. ವಾಸ್ತವದಲ್ಲಿ - ಒಂದು ಮೆಗಾಬೈಟ್‌ಗಿಂತ ಕಡಿಮೆ, ಮತ್ತು ಈ ಪ್ರೋಗ್ರಾಂಗಾಗಿ ಕಂಪನಿಗಳು ಸರ್ವರ್‌ನಲ್ಲಿ ಒಂದು ಪ್ರೊಸೆಸರ್‌ಗೆ ವರ್ಷಕ್ಕೆ ಹತ್ತಾರು ಸಾವಿರ ಡಾಲರ್‌ಗಳನ್ನು ಪಾವತಿಸುತ್ತವೆ.

  • ಈ ಗಾತ್ರವು KDB+ ಗೆ ಯಾವುದೇ ಹಾರ್ಡ್‌ವೇರ್‌ನಲ್ಲಿ ಉತ್ತಮ ಅನುಭವವನ್ನು ನೀಡುತ್ತದೆ - ಪೈ ಮೈಕ್ರೊಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಟೆರಾಬೈಟ್‌ಗಳ ಮೆಮೊರಿಯೊಂದಿಗೆ ಸರ್ವರ್‌ಗಳವರೆಗೆ. ಇದು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಣೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ; ಮೇಲಾಗಿ, Q ತಕ್ಷಣವೇ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಇದು ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಯಾಗಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.
  • ಈ ಗಾತ್ರದಲ್ಲಿ, ಕ್ಯೂ ಇಂಟರ್ಪ್ರಿಟರ್ ಪ್ರೊಸೆಸರ್ ಸಂಗ್ರಹಕ್ಕೆ ಸಂಪೂರ್ಣವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ, ಇದು ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ವೇಗಗೊಳಿಸುತ್ತದೆ.
  • ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ನ ಈ ಗಾತ್ರದೊಂದಿಗೆ, Q ಪ್ರಕ್ರಿಯೆಯು ಮೆಮೊರಿಯಲ್ಲಿ ಅತ್ಯಲ್ಪ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ; ನೀವು ಅವುಗಳನ್ನು ನೂರಾರು ರನ್ ಮಾಡಬಹುದು. ಇದಲ್ಲದೆ, ಅಗತ್ಯವಿದ್ದರೆ, Q ಒಂದೇ ಪ್ರಕ್ರಿಯೆಯೊಳಗೆ ಹತ್ತಾರು ಅಥವಾ ನೂರಾರು ಗಿಗಾಬೈಟ್‌ಗಳ ಮೆಮೊರಿಯೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಬಹುಮುಖತೆ

ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ Q ಉತ್ತಮವಾಗಿದೆ. ಪ್ರಕ್ರಿಯೆ Q ಒಂದು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಮಾಹಿತಿಯ ಟೆರಾಬೈಟ್‌ಗಳಿಗೆ ತ್ವರಿತ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು ಡಜನ್‌ಗಟ್ಟಲೆ ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಅವುಗಳಲ್ಲಿ ಕೆಲವು ಸಂಕ್ಷೇಪಿಸದ ದಿನದ ಡೇಟಾವು 100 ಗಿಗಾಬೈಟ್‌ಗಳಿಗಿಂತ ಹೆಚ್ಚು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಸಮಂಜಸವಾದ ನಿರ್ಬಂಧಗಳ ಅಡಿಯಲ್ಲಿ, ಡೇಟಾಬೇಸ್‌ಗೆ ಒಂದು ಪ್ರಶ್ನೆಯನ್ನು ಹತ್ತರಿಂದ ನೂರಾರು ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ, ನಾವು ಬಳಕೆದಾರರ ವಿನಂತಿಗಳಿಗಾಗಿ ಸಾರ್ವತ್ರಿಕ ಸಮಯಾವಧಿಯನ್ನು ಹೊಂದಿದ್ದೇವೆ - 30 ಸೆಕೆಂಡುಗಳು - ಮತ್ತು ಇದು ಬಹಳ ವಿರಳವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
 
Q ಅಷ್ಟೇ ಸುಲಭವಾಗಿ ಇನ್-ಮೆಮೊರಿ ಡೇಟಾಬೇಸ್ ಆಗಿರಬಹುದು. ಹೊಸ ಡೇಟಾವನ್ನು ಇನ್-ಮೆಮೊರಿ ಕೋಷ್ಟಕಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ ಆದ್ದರಿಂದ ಬಳಕೆದಾರರ ವಿನಂತಿಗಳು ಸೀಮಿತಗೊಳಿಸುವ ಅಂಶವಾಗಿದೆ. ಕೋಷ್ಟಕಗಳಲ್ಲಿನ ಡೇಟಾವನ್ನು ಕಾಲಮ್‌ಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಅಂದರೆ ಕಾಲಮ್‌ನಲ್ಲಿನ ಯಾವುದೇ ಕಾರ್ಯಾಚರಣೆಯು ಪ್ರೊಸೆಸರ್ ಸಂಗ್ರಹವನ್ನು ಪೂರ್ಣ ಸಾಮರ್ಥ್ಯದಲ್ಲಿ ಬಳಸುತ್ತದೆ. ಇದರ ಜೊತೆಯಲ್ಲಿ, ಪ್ರೊಸೆಸರ್‌ನ ವೆಕ್ಟರ್ ಸೂಚನೆಗಳ ಮೂಲಕ ಅಂಕಗಣಿತದಂತಹ ಎಲ್ಲಾ ಮೂಲಭೂತ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು KX ಪ್ರಯತ್ನಿಸಿತು, ಅವುಗಳ ವೇಗವನ್ನು ಹೆಚ್ಚಿಸಿತು. ಡೇಟಾಬೇಸ್‌ಗಳಿಗೆ ವಿಶಿಷ್ಟವಲ್ಲದ ಕಾರ್ಯಗಳನ್ನು Q ಸಹ ನಿರ್ವಹಿಸಬಹುದು - ಉದಾಹರಣೆಗೆ, ಸ್ಟ್ರೀಮಿಂಗ್ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ ಮತ್ತು “ನೈಜ ಸಮಯದಲ್ಲಿ” (ಕಾರ್ಯವನ್ನು ಅವಲಂಬಿಸಿ ಹತ್ತಾರು ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳಿಂದ ಹಲವಾರು ಸೆಕೆಂಡುಗಳವರೆಗೆ ವಿಳಂಬದೊಂದಿಗೆ) ವಿವಿಧ ಸಮಯಕ್ಕೆ ಹಣಕಾಸು ಸಾಧನಗಳಿಗಾಗಿ ವಿವಿಧ ಒಟ್ಟುಗೂಡಿಸುವ ಕಾರ್ಯಗಳನ್ನು ಲೆಕ್ಕಹಾಕಿ ಮಧ್ಯಂತರಗಳು ಅಥವಾ ಮಾರುಕಟ್ಟೆಗೆ ಪರಿಪೂರ್ಣ ವಹಿವಾಟುಗಳ ಪ್ರಭಾವದ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ ಮತ್ತು ಅದು ಪೂರ್ಣಗೊಂಡ ತಕ್ಷಣವೇ ಅದರ ಪ್ರೊಫೈಲಿಂಗ್ ಅನ್ನು ಕೈಗೊಳ್ಳಿ. ಅಂತಹ ಕಾರ್ಯಗಳಲ್ಲಿ, ಹೆಚ್ಚಾಗಿ ಮುಖ್ಯ ಸಮಯದ ವಿಳಂಬವು Q ಅಲ್ಲ, ಆದರೆ ವಿವಿಧ ಮೂಲಗಳಿಂದ ಡೇಟಾವನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡುವ ಅವಶ್ಯಕತೆಯಿದೆ. ಡೇಟಾ ಮತ್ತು ಅವುಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಕಾರ್ಯಗಳು ಒಂದು ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿವೆ ಎಂಬ ಅಂಶದಿಂದಾಗಿ ಹೆಚ್ಚಿನ ವೇಗವನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಸಂಸ್ಕರಣೆಯು ಹಲವಾರು QSQL ಅಭಿವ್ಯಕ್ತಿಗಳು ಮತ್ತು ಸೇರ್ಪಡೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಡಿಮೆಯಾಗಿದೆ, ಇವುಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ, ಆದರೆ ಬೈನರಿ ಕೋಡ್‌ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.
 
ಅಂತಿಮವಾಗಿ, ನೀವು ಯಾವುದೇ ಸೇವಾ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು Q ನಲ್ಲಿ ಬರೆಯಬಹುದು. ಉದಾಹರಣೆಗೆ, ಅಗತ್ಯ ಡೇಟಾಬೇಸ್‌ಗಳು ಮತ್ತು ಸರ್ವರ್‌ಗಳಿಗೆ ಬಳಕೆದಾರರ ವಿನಂತಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವಿತರಿಸುವ ಗೇಟ್‌ವೇ ಪ್ರಕ್ರಿಯೆಗಳು. ಪ್ರೋಗ್ರಾಮರ್ ಸಮತೋಲನ, ಆದ್ಯತೆ, ತಪ್ಪು ಸಹಿಷ್ಣುತೆ, ಪ್ರವೇಶ ಹಕ್ಕುಗಳು, ಕೋಟಾಗಳು ಮತ್ತು ಮೂಲಭೂತವಾಗಿ ಅವನ ಹೃದಯವು ಬಯಸುವ ಯಾವುದಾದರೂ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಂಪೂರ್ಣ ಸ್ವಾತಂತ್ರ್ಯವನ್ನು ಹೊಂದಿದೆ. ಇಲ್ಲಿರುವ ಮುಖ್ಯ ಸಮಸ್ಯೆ ಎಂದರೆ ನೀವೇ ಎಲ್ಲವನ್ನೂ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ.
 
ಉದಾಹರಣೆಯಾಗಿ, ನಾವು ಯಾವ ರೀತಿಯ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ ಎಂಬುದನ್ನು ನಾನು ಪಟ್ಟಿ ಮಾಡುತ್ತೇನೆ. ಅವೆಲ್ಲವೂ ಸಕ್ರಿಯವಾಗಿ ಬಳಸಲ್ಪಡುತ್ತವೆ ಮತ್ತು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ, ಡಜನ್ಗಟ್ಟಲೆ ವಿಭಿನ್ನ ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ಒಂದಾಗಿ ಸಂಯೋಜಿಸುತ್ತವೆ, ಬಹು ಮೂಲಗಳಿಂದ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತವೆ ಮತ್ತು ನೂರಾರು ಬಳಕೆದಾರರು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುತ್ತವೆ.

  • ಡೇಟಾ ಮೂಲಗಳಿಗೆ ಕನೆಕ್ಟರ್ಸ್ (ಫೀಡ್ ಹ್ಯಾಂಡ್ಲರ್). ಈ ಪ್ರಕ್ರಿಯೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ Q ಗೆ ಲೋಡ್ ಮಾಡಲಾದ ಬಾಹ್ಯ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸುತ್ತವೆ. Q ನಲ್ಲಿನ C ಇಂಟರ್ಫೇಸ್ ಅತ್ಯಂತ ಸರಳವಾಗಿದೆ ಮತ್ತು ಯಾವುದೇ C/C++ ಲೈಬ್ರರಿಗೆ ಸುಲಭವಾಗಿ ಪ್ರಾಕ್ಸಿ ಕಾರ್ಯಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. Q ನಿಭಾಯಿಸಲು ಸಾಕಷ್ಟು ವೇಗವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ಎಲ್ಲಾ ಯುರೋಪಿಯನ್ ಸ್ಟಾಕ್ ಎಕ್ಸ್ಚೇಂಜ್ಗಳಿಂದ ಏಕಕಾಲದಲ್ಲಿ FIX ಸಂದೇಶಗಳ ಪ್ರವಾಹವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ.
  • ಡೇಟಾ ವಿತರಕರು (ಟಿಕರ್‌ಪ್ಲಾಂಟ್), ಇದು ಕನೆಕ್ಟರ್‌ಗಳು ಮತ್ತು ಗ್ರಾಹಕರ ನಡುವೆ ಮಧ್ಯಂತರ ಕೊಂಡಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಅವರು ಒಳಬರುವ ಡೇಟಾವನ್ನು ವಿಶೇಷ ಬೈನರಿ ಲಾಗ್‌ಗೆ ಬರೆಯುತ್ತಾರೆ, ಸಂಪರ್ಕ ನಷ್ಟಗಳು ಅಥವಾ ಮರುಪ್ರಾರಂಭಗಳ ವಿರುದ್ಧ ಗ್ರಾಹಕರಿಗೆ ದೃಢತೆಯನ್ನು ಒದಗಿಸುತ್ತಾರೆ.
  • ಇನ್-ಮೆಮೊರಿ ಡೇಟಾಬೇಸ್ (RDB). ಈ ಡೇಟಾಬೇಸ್‌ಗಳು ಕಚ್ಚಾ, ತಾಜಾ ಡೇಟಾವನ್ನು ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸುವ ಮೂಲಕ ಸಾಧ್ಯವಾದಷ್ಟು ವೇಗವಾಗಿ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತವೆ. ವಿಶಿಷ್ಟವಾಗಿ, ಅವರು ದಿನದಲ್ಲಿ ಕೋಷ್ಟಕಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತಾರೆ ಮತ್ತು ರಾತ್ರಿಯಲ್ಲಿ ಅವುಗಳನ್ನು ಮರುಹೊಂದಿಸುತ್ತಾರೆ.
  • ನಿರಂತರ ಡೇಟಾಬೇಸ್ (ಪಿಡಿಬಿ). ಈ ಡೇಟಾಬೇಸ್‌ಗಳು ಇಂದಿನ ಡೇಟಾವನ್ನು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ನಿಯಮದಂತೆ, ಆರ್ಡಿಬಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಅವರು ಮೆಮೊರಿಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ, ಆದರೆ ದಿನದಲ್ಲಿ ಡಿಸ್ಕ್ನಲ್ಲಿ ವಿಶೇಷ ಸಂಗ್ರಹವನ್ನು ಬಳಸುತ್ತಾರೆ ಮತ್ತು ಮಧ್ಯರಾತ್ರಿಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್ಗೆ ನಕಲಿಸುತ್ತಾರೆ.
  • ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್‌ಗಳು (hdb). ಈ ಡೇಟಾಬೇಸ್‌ಗಳು ಹಿಂದಿನ ದಿನಗಳು, ತಿಂಗಳುಗಳು ಮತ್ತು ವರ್ಷಗಳ ಡೇಟಾಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತವೆ. ಅವುಗಳ ಗಾತ್ರ (ದಿನಗಳಲ್ಲಿ) ಹಾರ್ಡ್ ಡ್ರೈವ್‌ಗಳ ಗಾತ್ರದಿಂದ ಮಾತ್ರ ಸೀಮಿತವಾಗಿದೆ. ಪ್ರವೇಶವನ್ನು ವೇಗಗೊಳಿಸಲು ಡೇಟಾವನ್ನು ಎಲ್ಲಿ ಬೇಕಾದರೂ ಇರಿಸಬಹುದು, ನಿರ್ದಿಷ್ಟವಾಗಿ ವಿವಿಧ ಡಿಸ್ಕ್ಗಳಲ್ಲಿ. ಆಯ್ಕೆ ಮಾಡಲು ಹಲವಾರು ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ಕುಗ್ಗಿಸಲು ಸಾಧ್ಯವಿದೆ. ಡೇಟಾಬೇಸ್‌ನ ರಚನೆಯು ಉತ್ತಮವಾಗಿ ದಾಖಲಿಸಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಸರಳವಾಗಿದೆ, ಡೇಟಾವನ್ನು ಸಾಮಾನ್ಯ ಫೈಲ್‌ಗಳಲ್ಲಿ ಕಾಲಮ್‌ನಿಂದ ಕಾಲಮ್‌ನಿಂದ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮೂಲಕ ಸೇರಿದಂತೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು.
  • ಒಟ್ಟುಗೂಡಿದ ಮಾಹಿತಿಯೊಂದಿಗೆ ಡೇಟಾಬೇಸ್‌ಗಳು. ಅವರು ವಿವಿಧ ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತಾರೆ, ಸಾಮಾನ್ಯವಾಗಿ ವಾದ್ಯದ ಹೆಸರು ಮತ್ತು ಸಮಯದ ಮಧ್ಯಂತರದಿಂದ ಗುಂಪು ಮಾಡಲಾಗುತ್ತದೆ. ಇನ್-ಮೆಮೊರಿ ಡೇಟಾಬೇಸ್‌ಗಳು ಪ್ರತಿ ಒಳಬರುವ ಸಂದೇಶದೊಂದಿಗೆ ತಮ್ಮ ಸ್ಥಿತಿಯನ್ನು ನವೀಕರಿಸುತ್ತವೆ ಮತ್ತು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್‌ಗಳು ಐತಿಹಾಸಿಕ ಡೇಟಾಗೆ ಪ್ರವೇಶವನ್ನು ವೇಗಗೊಳಿಸಲು ಪೂರ್ವ-ಕಂಪ್ಯೂಟೆಡ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತವೆ.
  • ಅಂತಿಮವಾಗಿ ಗೇಟ್ವೇ ಪ್ರಕ್ರಿಯೆಗಳುಸೇವೆ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಬಳಕೆದಾರರಿಗೆ. ಒಳಬರುವ ಸಂದೇಶಗಳ ಸಂಪೂರ್ಣ ಅಸಮಕಾಲಿಕ ಸಂಸ್ಕರಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು Q ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಡೇಟಾಬೇಸ್‌ಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ವಿತರಿಸುವುದು, ಪ್ರವೇಶ ಹಕ್ಕುಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು ಇತ್ಯಾದಿ. ಇತರ ಡೇಟಾಬೇಸ್‌ಗಳಲ್ಲಿರುವಂತೆ ಸಂದೇಶಗಳು ಸೀಮಿತವಾಗಿಲ್ಲ ಮತ್ತು ಹೆಚ್ಚಾಗಿ SQL ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಹೆಚ್ಚಾಗಿ, SQL ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ವಿಶೇಷ ಕಾರ್ಯದಲ್ಲಿ ಮರೆಮಾಡಲಾಗಿದೆ ಮತ್ತು ಬಳಕೆದಾರರು ವಿನಂತಿಸಿದ ನಿಯತಾಂಕಗಳನ್ನು ಆಧರಿಸಿ ನಿರ್ಮಿಸಲಾಗಿದೆ - ಸಮಯವನ್ನು ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ, ಫಿಲ್ಟರ್ ಮಾಡಲಾಗುತ್ತದೆ, ಡೇಟಾವನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಲಾಭಾಂಶವನ್ನು ಪಾವತಿಸಿದರೆ ಸ್ಟಾಕ್ ಬೆಲೆಯನ್ನು ಸಮನಾಗಿರುತ್ತದೆ), ಇತ್ಯಾದಿ.

ಒಂದು ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ ವಿಶಿಷ್ಟವಾದ ಆರ್ಕಿಟೆಕ್ಚರ್:

KDB+ ಡೇಟಾಬೇಸ್: ಹಣಕಾಸುದಿಂದ ಫಾರ್ಮುಲಾ 1 ವರೆಗೆ

ವೇಗ

Q ಒಂದು ವ್ಯಾಖ್ಯಾನಿತ ಭಾಷೆಯಾಗಿದ್ದರೂ, ಇದು ವೆಕ್ಟರ್ ಭಾಷೆಯಾಗಿದೆ. ಇದರರ್ಥ ಅನೇಕ ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯಗಳು, ನಿರ್ದಿಷ್ಟವಾಗಿ ಅಂಕಗಣಿತದ ಕಾರ್ಯಗಳು, ಯಾವುದೇ ರೂಪದ ವಾದಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ - ಸಂಖ್ಯೆಗಳು, ವೆಕ್ಟರ್‌ಗಳು, ಮ್ಯಾಟ್ರಿಸಸ್, ಪಟ್ಟಿಗಳು - ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅರೇ ಕಾರ್ಯಾಚರಣೆಗಳಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ. ಅಂತಹ ಭಾಷೆಯಲ್ಲಿ, ನೀವು ಒಂದು ಮಿಲಿಯನ್ ಅಂಶಗಳ ಎರಡು ವೆಕ್ಟರ್‌ಗಳನ್ನು ಸೇರಿಸಿದರೆ, ಭಾಷೆಯನ್ನು ಅರ್ಥೈಸಿಕೊಳ್ಳುವುದು ಇನ್ನು ಮುಂದೆ ಮುಖ್ಯವಲ್ಲ; ಹೆಚ್ಚುವರಿ-ಆಪ್ಟಿಮೈಸ್ಡ್ ಬೈನರಿ ಫಂಕ್ಷನ್‌ನಿಂದ ಸೇರ್ಪಡೆ ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಮೂಲಭೂತ ವೆಕ್ಟರೈಸ್ಡ್ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಬಳಸುವ ಟೇಬಲ್‌ಗಳೊಂದಿಗಿನ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಕ್ಯೂ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ಸಿಂಹದ ಪಾಲನ್ನು ಖರ್ಚು ಮಾಡಲಾಗಿರುವುದರಿಂದ, ಔಟ್‌ಪುಟ್ ಅತ್ಯಂತ ಯೋಗ್ಯವಾದ ಕಾರ್ಯಾಚರಣಾ ವೇಗವಾಗಿದೆ, ಇದು ಒಂದು ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿಯೂ ಸಹ ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ನಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಪೈಥಾನ್‌ನಲ್ಲಿನ ಗಣಿತದ ಲೈಬ್ರರಿಗಳಿಗೆ ಹೋಲುತ್ತದೆ - ಪೈಥಾನ್ ಸ್ವತಃ ತುಂಬಾ ನಿಧಾನವಾದ ಭಾಷೆಯಾಗಿದ್ದರೂ, ಕಂಪೈಲ್ ಮಾಡಿದ ಭಾಷೆಯ ವೇಗದಲ್ಲಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ numpy ನಂತಹ ಅನೇಕ ಅತ್ಯುತ್ತಮ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಹೊಂದಿದೆ (ಮೂಲಕ, numpy ಸೈದ್ಧಾಂತಿಕವಾಗಿ Q ಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ )
 
ಹೆಚ್ಚುವರಿಯಾಗಿ, KX ಕೋಷ್ಟಕಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲು ಮತ್ತು ಅವರೊಂದಿಗೆ ಕೆಲಸವನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಬಹಳ ಎಚ್ಚರಿಕೆಯ ವಿಧಾನವನ್ನು ತೆಗೆದುಕೊಂಡಿತು. ಮೊದಲನೆಯದಾಗಿ, ಹಲವಾರು ವಿಧದ ಸೂಚ್ಯಂಕಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ, ಇದು ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯಗಳಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ ಮತ್ತು ಟೇಬಲ್ ಕಾಲಮ್‌ಗಳಿಗೆ ಮಾತ್ರವಲ್ಲದೆ ಯಾವುದೇ ವೆಕ್ಟರ್‌ಗಳಿಗೂ ಅನ್ವಯಿಸಬಹುದು - ಗುಂಪು ಮಾಡುವುದು, ವಿಂಗಡಿಸುವುದು, ಅನನ್ಯತೆಯ ಗುಣಲಕ್ಷಣ ಮತ್ತು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್‌ಗಳಿಗಾಗಿ ವಿಶೇಷ ಗುಂಪು ಮಾಡುವುದು. ಸೂಚಿಯನ್ನು ಸರಳವಾಗಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕಾಲಮ್/ವೆಕ್ಟರ್‌ಗೆ ಅಂಶಗಳನ್ನು ಸೇರಿಸುವಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಮೆಮೊರಿ ಮತ್ತು ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಟೇಬಲ್ ಕಾಲಮ್‌ಗಳಿಗೆ ಸೂಚಿಕೆಗಳನ್ನು ಸಮಾನವಾಗಿ ಯಶಸ್ವಿಯಾಗಿ ಅನ್ವಯಿಸಬಹುದು. QSQL ಪ್ರಶ್ನೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ಸಾಧ್ಯವಾದರೆ ಸೂಚಿಕೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಎರಡನೆಯದಾಗಿ, OS ಫೈಲ್‌ಗಳನ್ನು (ಮೆಮೊರಿ ಮ್ಯಾಪ್) ಪ್ರದರ್ಶಿಸುವ ಕಾರ್ಯವಿಧಾನದ ಮೂಲಕ ಐತಿಹಾಸಿಕ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸವನ್ನು ಮಾಡಲಾಗುತ್ತದೆ. ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳನ್ನು ಎಂದಿಗೂ ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ; ಬದಲಿಗೆ, ಅಗತ್ಯವಿರುವ ಕಾಲಮ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಮೆಮೊರಿಗೆ ಮ್ಯಾಪ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಆ ಭಾಗವನ್ನು ಮಾತ್ರ ವಾಸ್ತವವಾಗಿ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ (ಸೂಚ್ಯಂಕಗಳು ಸಹ ಇಲ್ಲಿ ಸಹಾಯ ಮಾಡುತ್ತವೆ) ಅಗತ್ಯವಿದೆ. ಡೇಟಾ ಮೆಮೊರಿಯಲ್ಲಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬುದು ಪ್ರೋಗ್ರಾಮರ್‌ಗೆ ಯಾವುದೇ ವ್ಯತ್ಯಾಸವನ್ನುಂಟು ಮಾಡುವುದಿಲ್ಲ; ಎಂಎಂಎಪಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಕಾರ್ಯವಿಧಾನವು ಸಂಪೂರ್ಣವಾಗಿ Q ನ ಆಳದಲ್ಲಿ ಮರೆಮಾಡಲಾಗಿದೆ.
 
KDB+ ಸಂಬಂಧಿತ ಡೇಟಾಬೇಸ್ ಅಲ್ಲ; ಕೋಷ್ಟಕಗಳು ಅನಿಯಂತ್ರಿತ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರಬಹುದು, ಆದರೆ ಹೊಸ ಅಂಶಗಳನ್ನು ಸೇರಿಸಿದಾಗ ಕೋಷ್ಟಕದಲ್ಲಿನ ಸಾಲುಗಳ ಕ್ರಮವು ಬದಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಪ್ರಶ್ನೆಗಳನ್ನು ಬರೆಯುವಾಗ ಬಳಸಬಹುದು ಮತ್ತು ಬಳಸಬಹುದು. ಸಮಯ ಸರಣಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಈ ವೈಶಿಷ್ಟ್ಯವು ತುರ್ತಾಗಿ ಅಗತ್ಯವಿದೆ (ವಿನಿಮಯಗಳು, ಟೆಲಿಮೆಟ್ರಿ, ಈವೆಂಟ್ ಲಾಗ್‌ಗಳಿಂದ ಡೇಟಾ), ಏಕೆಂದರೆ ಡೇಟಾವನ್ನು ಸಮಯಕ್ಕೆ ಅನುಗುಣವಾಗಿ ವಿಂಗಡಿಸಿದರೆ, ನಂತರ ಬಳಕೆದಾರರು ಮೊದಲ ಅಥವಾ ಕೊನೆಯ ಸಾಲು ಅಥವಾ N ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು ಯಾವುದೇ SQL ತಂತ್ರಗಳನ್ನು ಬಳಸಬೇಕಾಗಿಲ್ಲ. ಕೋಷ್ಟಕದಲ್ಲಿನ ಸಾಲುಗಳು , ಯಾವ ಸಾಲು Nth ಸಾಲನ್ನು ಅನುಸರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಿ, ಇತ್ಯಾದಿ. ಟೇಬಲ್ ಸೇರ್ಪಡೆಗಳನ್ನು ಇನ್ನಷ್ಟು ಸರಳಗೊಳಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, 16000 ಮಿಲಿಯನ್ ಅಂಶಗಳ ಟೇಬಲ್‌ನಲ್ಲಿ 500 VOD.L (ವೊಡಾಫೋನ್) ವಹಿವಾಟುಗಳಿಗೆ ಕೊನೆಯ ಉಲ್ಲೇಖವನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಒಂದು ಸೆಕೆಂಡ್ ಮತ್ತು ಮೆಮೊರಿಯಲ್ಲಿ ಹತ್ತಾರು ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.
 
ಸಮಯ ಸೇರುವಿಕೆಯ ಉದಾಹರಣೆ - ಉಲ್ಲೇಖ ಕೋಷ್ಟಕವನ್ನು ಮೆಮೊರಿಗೆ ಮ್ಯಾಪ್ ಮಾಡಲಾಗಿದೆ, ಆದ್ದರಿಂದ VOD.L ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲ, ಸಿಮ್ ಕಾಲಮ್‌ನಲ್ಲಿನ ಸೂಚ್ಯಂಕ ಮತ್ತು ಡೇಟಾವನ್ನು ಸಮಯದಿಂದ ವಿಂಗಡಿಸಲಾಗಿದೆ ಎಂಬ ಅಂಶವನ್ನು ಸೂಚ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. Q ನಲ್ಲಿನ ಬಹುತೇಕ ಎಲ್ಲಾ ಸೇರ್ಪಡೆಗಳು ನಿಯಮಿತ ಕಾರ್ಯಗಳಾಗಿವೆ, ಆಯ್ದ ಅಭಿವ್ಯಕ್ತಿಯ ಭಾಗವಲ್ಲ:

1. aj[`sym`time;select from trade where date=2019.03.26, sym=`VOD.L;select from quote where date=2019.03.26]  

ಅಂತಿಮವಾಗಿ, KX ನಲ್ಲಿನ ಇಂಜಿನಿಯರ್‌ಗಳು, ಸ್ವತಃ ಆರ್ಥರ್ ವಿಟ್ನಿಯಿಂದ ಪ್ರಾರಂಭಿಸಿ, ದಕ್ಷತೆಯ ಬಗ್ಗೆ ನಿಜವಾಗಿಯೂ ಗೀಳನ್ನು ಹೊಂದಿದ್ದಾರೆ ಮತ್ತು Q ನ ಪ್ರಮಾಣಿತ ವೈಶಿಷ್ಟ್ಯಗಳಿಂದ ಹೆಚ್ಚಿನದನ್ನು ಪಡೆಯಲು ಮತ್ತು ಸಾಮಾನ್ಯ ಬಳಕೆಯ ಮಾದರಿಗಳನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಹೆಚ್ಚಿನ ಪ್ರಯತ್ನಗಳನ್ನು ಮಾಡುತ್ತಾರೆ.
 

ಫಲಿತಾಂಶ

KDB+ ಪ್ರಾಥಮಿಕವಾಗಿ ಅದರ ಅಸಾಧಾರಣ ಬಹುಮುಖತೆಯಿಂದಾಗಿ ವ್ಯವಹಾರಗಳಲ್ಲಿ ಜನಪ್ರಿಯವಾಗಿದೆ - ಇದು ಟೆರಾಬೈಟ್‌ಗಳಷ್ಟು ಐತಿಹಾಸಿಕ ದತ್ತಾಂಶವನ್ನು ಸಂಗ್ರಹಿಸಲು ಡೇಟಾಬೇಸ್‌ನಂತೆ ಮತ್ತು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಗೆ ವೇದಿಕೆಯಾಗಿ ಇನ್-ಮೆಮೊರಿ ಡೇಟಾಬೇಸ್‌ನಂತೆ ಸಮಾನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಡೇಟಾ ಸಂಸ್ಕರಣೆಯು ನೇರವಾಗಿ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬ ಅಂಶದಿಂದಾಗಿ, ಹೆಚ್ಚಿನ ವೇಗದ ಕೆಲಸ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಉಳಿತಾಯವನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಡೇಟಾಬೇಸ್ ಕಾರ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯು ಒಂದೇ ವೇದಿಕೆಯಲ್ಲಿ ಅಗತ್ಯವಾದ ಪ್ರಕ್ರಿಯೆಗಳ ಸಂಪೂರ್ಣ ಸ್ಟಾಕ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ - ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸುವುದರಿಂದ ಬಳಕೆದಾರರ ವಿನಂತಿಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವವರೆಗೆ.
 

ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ,

ನ್ಯೂನತೆಗಳನ್ನು

KDB+/Q ನ ಗಮನಾರ್ಹ ಅನನುಕೂಲವೆಂದರೆ ಹೆಚ್ಚಿನ ಪ್ರವೇಶ ಮಿತಿ. ಭಾಷೆಯು ವಿಚಿತ್ರವಾದ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಹೊಂದಿದೆ, ಕೆಲವು ಕಾರ್ಯಗಳು ಅತೀವವಾಗಿ ಓವರ್ಲೋಡ್ ಆಗಿವೆ (ಮೌಲ್ಯ, ಉದಾಹರಣೆಗೆ, ಸುಮಾರು 11 ಬಳಕೆಯ ಪ್ರಕರಣಗಳನ್ನು ಹೊಂದಿದೆ). ಬಹು ಮುಖ್ಯವಾಗಿ, ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಬರೆಯಲು ಆಮೂಲಾಗ್ರವಾಗಿ ವಿಭಿನ್ನವಾದ ವಿಧಾನದ ಅಗತ್ಯವಿದೆ. ವೆಕ್ಟರ್ ಭಾಷೆಯಲ್ಲಿ, ನೀವು ಯಾವಾಗಲೂ ರಚನೆಯ ರೂಪಾಂತರಗಳ ವಿಷಯದಲ್ಲಿ ಯೋಚಿಸಬೇಕು, ನಕ್ಷೆಯ ಹಲವಾರು ರೂಪಾಂತರಗಳ ಮೂಲಕ ಎಲ್ಲಾ ಲೂಪ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು/ಕಡಿಮೆಗೊಳಿಸುವ ಕಾರ್ಯಗಳು (Q ನಲ್ಲಿ ಕ್ರಿಯಾವಿಶೇಷಣಗಳು ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತವೆ), ಮತ್ತು ವೆಕ್ಟರ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಪರಮಾಣುಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ ಹಣವನ್ನು ಉಳಿಸಲು ಎಂದಿಗೂ ಪ್ರಯತ್ನಿಸಬೇಡಿ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಶ್ರೇಣಿಯಲ್ಲಿನ ಅಂಶದ Nth ಸಂಭವಿಸುವಿಕೆಯ ಸೂಚಿಯನ್ನು ಕಂಡುಹಿಡಿಯಲು, ನೀವು ಬರೆಯಬೇಕು:

1. (where element=vector)[N]  

ಇದು ಸಿ/ಜಾವಾ ಮಾನದಂಡಗಳಿಂದ ಭಯಾನಕ ಅಸಮರ್ಥವೆಂದು ತೋರುತ್ತದೆಯಾದರೂ (= ಬೂಲಿಯನ್ ವೆಕ್ಟರ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅಲ್ಲಿ ಅಂಶಗಳ ನಿಜವಾದ ಸೂಚಿಕೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ). ಆದರೆ ಈ ಸಂಕೇತವು ಅಭಿವ್ಯಕ್ತಿಯ ಅರ್ಥವನ್ನು ಹೆಚ್ಚು ಸ್ಪಷ್ಟಪಡಿಸುತ್ತದೆ ಮತ್ತು ನೀವು ನಿಧಾನವಾದ ಪರಮಾಣುಗಳ ಬದಲಿಗೆ ವೇಗದ ವೆಕ್ಟರ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬಳಸುತ್ತೀರಿ. ವೆಕ್ಟರ್ ಭಾಷೆ ಮತ್ತು ಇತರರ ನಡುವಿನ ಪರಿಕಲ್ಪನಾ ವ್ಯತ್ಯಾಸವು ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ಗೆ ಕಡ್ಡಾಯ ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ವಿಧಾನಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಕ್ಕೆ ಹೋಲಿಸಬಹುದು ಮತ್ತು ಇದಕ್ಕಾಗಿ ನೀವು ಸಿದ್ಧರಾಗಿರಬೇಕು.
 
ಕೆಲವು ಬಳಕೆದಾರರು QSQL ಬಗ್ಗೆ ಅತೃಪ್ತಿ ಹೊಂದಿದ್ದಾರೆ. ಮುಖ್ಯ ವಿಷಯವೆಂದರೆ ಅದು ನಿಜವಾದ SQL ನಂತೆ ಮಾತ್ರ ಕಾಣುತ್ತದೆ. ವಾಸ್ತವದಲ್ಲಿ, ಇದು ಕೇವಲ SQL ತರಹದ ಅಭಿವ್ಯಕ್ತಿಗಳ ಇಂಟರ್ಪ್ರಿಟರ್ ಆಗಿದ್ದು ಅದು ಪ್ರಶ್ನೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬಳಕೆದಾರರು ಸ್ವತಃ ಸೂಕ್ತ ಪ್ರಶ್ನೆಗಳನ್ನು ಬರೆಯಬೇಕು ಮತ್ತು Q ನಲ್ಲಿ, ಇದು ಅನೇಕರು ಸಿದ್ಧವಾಗಿಲ್ಲ. ಮತ್ತೊಂದೆಡೆ, ಕಪ್ಪು-ಪೆಟ್ಟಿಗೆ ಆಪ್ಟಿಮೈಜರ್ ಅನ್ನು ಅವಲಂಬಿಸುವ ಬದಲು ನೀವು ಯಾವಾಗಲೂ ಸೂಕ್ತವಾದ ಪ್ರಶ್ನೆಯನ್ನು ನೀವೇ ಬರೆಯಬಹುದು.
 
ಜೊತೆಗೆ, Q - Q ಫಾರ್ ಮಾರ್ಟಲ್ಸ್ ಪುಸ್ತಕವು ಇಲ್ಲಿ ಉಚಿತವಾಗಿ ಲಭ್ಯವಿದೆ ಕಂಪನಿ ವೆಬ್ಸೈಟ್, ಅಲ್ಲಿ ಸಾಕಷ್ಟು ಇತರ ಉಪಯುಕ್ತ ವಸ್ತುಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.
 
ಮತ್ತೊಂದು ದೊಡ್ಡ ಅನನುಕೂಲವೆಂದರೆ ಪರವಾನಗಿಯ ವೆಚ್ಚ. ಅದು ಪ್ರತಿ ಸಿಪಿಯುಗೆ ವರ್ಷಕ್ಕೆ ಹತ್ತು ಸಾವಿರ ಡಾಲರ್‌ಗಳು. ದೊಡ್ಡ ಕಂಪನಿಗಳು ಮಾತ್ರ ಅಂತಹ ವೆಚ್ಚವನ್ನು ಭರಿಸಬಲ್ಲವು. ಇತ್ತೀಚೆಗೆ, KX ತನ್ನ ಪರವಾನಗಿ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವಂತೆ ಮಾಡಿದೆ ಮತ್ತು Google ಮತ್ತು Amazon ಕ್ಲೌಡ್‌ಗಳಲ್ಲಿ KDB+ ಅನ್ನು ಬಳಸುವ ಸಮಯ ಅಥವಾ ಬಾಡಿಗೆಗೆ ಮಾತ್ರ ಪಾವತಿಸಲು ಅವಕಾಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. KX ಡೌನ್‌ಲೋಡ್‌ಗೆ ಸಹ ನೀಡುತ್ತದೆ ವಾಣಿಜ್ಯೇತರ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಉಚಿತ ಆವೃತ್ತಿ (32 ಬಿಟ್ ಆವೃತ್ತಿ ಅಥವಾ 64 ಬಿಟ್ ವಿನಂತಿಯ ಮೇರೆಗೆ).
 

ಸ್ಪರ್ಧಿಗಳು

ಒಂದೇ ರೀತಿಯ ತತ್ವಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲಾದ ಕೆಲವು ವಿಶೇಷ ಡೇಟಾಬೇಸ್‌ಗಳಿವೆ - ಸ್ತಂಭಾಕಾರದ, ಇನ್-ಮೆಮೊರಿ, ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾದ ಮೇಲೆ ಕೇಂದ್ರೀಕೃತವಾಗಿದೆ. ಸಮಸ್ಯೆಯೆಂದರೆ ಇವು ವಿಶೇಷ ಡೇಟಾಬೇಸ್‌ಗಳಾಗಿವೆ. ಒಂದು ಗಮನಾರ್ಹ ಉದಾಹರಣೆ ಕ್ಲಿಕ್‌ಹೌಸ್. ಈ ಡೇಟಾಬೇಸ್ ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಸೂಚ್ಯಂಕವನ್ನು ನಿರ್ಮಿಸಲು KDB+ ಗೆ ಹೋಲುವ ತತ್ವವನ್ನು ಹೊಂದಿದೆ; ಇದು KDB+ ಗಿಂತ ವೇಗವಾಗಿ ಕೆಲವು ಪ್ರಶ್ನೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೂ ಗಮನಾರ್ಹವಾಗಿಲ್ಲ. ಆದರೆ ಡೇಟಾಬೇಸ್ ಆಗಿ, ಕ್ಲಿಕ್‌ಹೌಸ್ KDB+ ಗಿಂತ ಹೆಚ್ಚು ವಿಶೇಷವಾಗಿದೆ - ವೆಬ್ ಅನಾಲಿಟಿಕ್ಸ್ vs ಅನಿಯಂತ್ರಿತ ಸಮಯ ಸರಣಿ (ಈ ವ್ಯತ್ಯಾಸವು ಬಹಳ ಮುಖ್ಯವಾಗಿದೆ - ಅದರ ಕಾರಣದಿಂದಾಗಿ, ಉದಾಹರಣೆಗೆ, ಕ್ಲಿಕ್‌ಹೌಸ್‌ನಲ್ಲಿ ದಾಖಲೆಗಳ ಆದೇಶವನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ). ಆದರೆ, ಬಹು ಮುಖ್ಯವಾಗಿ, ಕ್ಲಿಕ್‌ಹೌಸ್ KDB+ ನ ಬಹುಮುಖತೆಯನ್ನು ಹೊಂದಿಲ್ಲ, ಇದು ಡೇಟಾವನ್ನು ನೇರವಾಗಿ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಅನುಮತಿಸುವ ಭಾಷೆ, ಅದನ್ನು ಮೊದಲು ಪ್ರತ್ಯೇಕ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಲೋಡ್ ಮಾಡುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ, ಅನಿಯಂತ್ರಿತ SQL ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು, ಪ್ರಶ್ನೆಯಲ್ಲಿ ಅನಿಯಂತ್ರಿತ ಕಾರ್ಯಗಳನ್ನು ಅನ್ವಯಿಸುವುದು, ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ರಚಿಸುವುದು ಐತಿಹಾಸಿಕ ಡೇಟಾಬೇಸ್ ಕಾರ್ಯಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಗೆ ಸಂಬಂಧಿಸಿಲ್ಲ. ಆದ್ದರಿಂದ, KDB+ ಅನ್ನು ಇತರ ಡೇಟಾಬೇಸ್‌ಗಳೊಂದಿಗೆ ಹೋಲಿಸುವುದು ಕಷ್ಟ; ಕೆಲವು ಬಳಕೆಯ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅವು ಉತ್ತಮವಾಗಬಹುದು ಅಥವಾ ಕ್ಲಾಸಿಕ್ ಡೇಟಾಬೇಸ್ ಕಾರ್ಯಗಳಿಗೆ ಬಂದಾಗ ಸರಳವಾಗಿ ಉತ್ತಮವಾಗಬಹುದು, ಆದರೆ ತಾತ್ಕಾಲಿಕ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಮತ್ತೊಂದು ಸಮಾನವಾದ ಪರಿಣಾಮಕಾರಿ ಮತ್ತು ಬಹುಮುಖ ಸಾಧನದ ಬಗ್ಗೆ ನನಗೆ ತಿಳಿದಿಲ್ಲ.
 

ಪೈಥಾನ್ ಏಕೀಕರಣ

ತಂತ್ರಜ್ಞಾನದ ಪರಿಚಯವಿಲ್ಲದ ಜನರಿಗೆ KDB+ ಅನ್ನು ಸುಲಭವಾಗಿ ಬಳಸಲು, KX ಒಂದೇ ಪ್ರಕ್ರಿಯೆಯೊಳಗೆ ಪೈಥಾನ್‌ನೊಂದಿಗೆ ಬಿಗಿಯಾಗಿ ಸಂಯೋಜಿಸಲು ಲೈಬ್ರರಿಗಳನ್ನು ರಚಿಸಿತು. ನೀವು Q ನಿಂದ ಯಾವುದೇ ಪೈಥಾನ್ ಕಾರ್ಯವನ್ನು ಕರೆಯಬಹುದು, ಅಥವಾ ಪ್ರತಿಯಾಗಿ - ಪೈಥಾನ್‌ನಿಂದ ಯಾವುದೇ Q ಕಾರ್ಯವನ್ನು ಕರೆಯಬಹುದು (ನಿರ್ದಿಷ್ಟವಾಗಿ, QSQL ಅಭಿವ್ಯಕ್ತಿಗಳು). ಗ್ರಂಥಾಲಯಗಳು ಅಗತ್ಯವಿದ್ದಲ್ಲಿ (ಯಾವಾಗಲೂ ದಕ್ಷತೆಯ ಸಲುವಾಗಿ ಅಲ್ಲ), ಡೇಟಾವನ್ನು ಒಂದು ಭಾಷೆಯ ಸ್ವರೂಪದಿಂದ ಇನ್ನೊಂದು ಸ್ವರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತವೆ. ಪರಿಣಾಮವಾಗಿ, ಕ್ಯೂ ಮತ್ತು ಪೈಥಾನ್ ಅಂತಹ ನಿಕಟ ಸಹಜೀವನದಲ್ಲಿ ವಾಸಿಸುತ್ತವೆ, ಅವುಗಳ ನಡುವಿನ ಗಡಿಗಳು ಮಸುಕಾಗಿರುತ್ತವೆ. ಪರಿಣಾಮವಾಗಿ, ಪ್ರೋಗ್ರಾಮರ್, ಒಂದೆಡೆ, ಹಲವಾರು ಉಪಯುಕ್ತ ಪೈಥಾನ್ ಲೈಬ್ರರಿಗಳಿಗೆ ಸಂಪೂರ್ಣ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದ್ದಾನೆ, ಮತ್ತೊಂದೆಡೆ, ಪೈಥಾನ್‌ನಲ್ಲಿ ಸಂಯೋಜಿಸಲಾದ ದೊಡ್ಡ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಅವನು ವೇಗದ ನೆಲೆಯನ್ನು ಪಡೆಯುತ್ತಾನೆ, ಇದು ಯಂತ್ರ ಕಲಿಕೆಯಲ್ಲಿ ತೊಡಗಿರುವವರಿಗೆ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಅಥವಾ ಮಾಡೆಲಿಂಗ್.
 
ಪೈಥಾನ್‌ನಲ್ಲಿ Q ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು:

1. >>> q()  
2.q)trade:([]date:();sym:();qty:())  
3. q)  
4. >>> q.insert('trade', (date(2006,10,6), 'IBM', 200))  
5. k(',0')  
6. >>> q.insert('trade', (date(2006,10,6), 'MSFT', 100))  
7. k(',1')  

ಉಲ್ಲೇಖಗಳು

ಕಂಪನಿಯ ಸೈಟ್ - https://kx.com/
ಡೆವಲಪರ್‌ಗಳಿಗಾಗಿ ವೆಬ್‌ಸೈಟ್ - https://code.kx.com/v2/
ಪುಸ್ತಕ Q ಫಾರ್ ಮಾರ್ಟಲ್ಸ್ (ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ) - https://code.kx.com/q4m3/
kx ಉದ್ಯೋಗಿಗಳಿಂದ KDB+/Q ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಕುರಿತು ಲೇಖನಗಳು - https://code.kx.com/v2/wp/

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ