KDB+, ืืืฆืจ ืืืจื
ืืืืืจ ืื ืื ืกื ืืกืคืจ ืืื ืืืืคื ืืืื ืื ืื KDB+, ืืืื ืืืืืืช ืืืืืืืช ืืฉ ืื, ืืื ืืืชืจืื ืืช ืฉืื ืืืืจืืช ืฉืจืืฆืืช ืืขืื ืืืืืืช ืืืืืืช ืฉื ื ืชืื ืื. ืื ืืื ืก ืืคืจืื ืืืืฉืื ืฉื +KDB ืื ืืคืจืื ืฉืคืช ืืชืื ืืช ืฉืื Q. ืฉื ื ืื ืืฉืืื ืืืื ืจืืืื ืืืื ืืจืืืืื ืืืืืจืื ื ืคืจืืื. ืืืืข ืจื ืขื ื ืืฉืืื ืืื ื ืืชื ืืืฆืื ื-code.kx.com, ืืืื ืกืคืจ ืขื Q - Q For Mortals (ืจืื ืงืืฉืืจ ืืืื).
ืืื ืืื ืืื
- ืืกื ื ืชืื ืื ืืืืืจืื. ืืกื ื ืชืื ืื ืืืืืกื ื ืชืื ืื ื-RAM ืืืืฉื ืืืืจื ืืืชืจ. ืืืชืจืื ืืช ืฉื ืืกื ื ืชืื ืื ืืื ืืจืืจืื, ืื ืืืกืจืื ืืช ืื ืืืคืฉืจืืช ืืืืืื ื ืชืื ืื ืืืฆืืจื ืืืืืืง ืืืืจืื ืจื ืืฉืจืช.
- ืืกื ื ืชืื ืื ืขืืืืืช. ืืกื ื ืชืื ืื ืฉืื ืื ืชืื ืื ืืืืืกื ืื ืขืืืื ืืืจ ืขืืืื ืืืงืื ืจืฉืืื ืืืจ ืจืฉืืื. ืืืชืจืื ืืขืืงืจื ืฉื ืืกื ื ืชืื ืื ืืื ืืื ืฉืื ืชืื ืื ืืขืืืื ืืืช ืืืืืกื ืื ืืื ืืืืกืง ืืืืืืจืื, ืื ืฉืืืืฅ ืืฉืืขืืชืืช ืืช ืืืืฉื ืืืื. ืืื ืฆืืจื ืืืขืื ืขืืืืืช ืฉืืื ื ืืฉืืืืฉ ืืฉืืืืชื. ืืืืกืจืื ืืขืืงืจื ืืื ืฉืงืฉื ืืฉื ืืช ืืืืืืง ืจืฉืืืืช.
- ืกืืจืช ืืื. ื ืชืื ืื ืขื ืขืืืืช ืชืืจืื ืื ืฉืขื. ืืืจื ืืื, ืกืืจ ืืืื ืืฉืื ืขืืืจ ื ืชืื ืื ืืืื, ืื ืฉืชืืื ืืงืืืข ืืงืืืช ืืืื ืจืฉืืื ืงืืืืช ืืจืฉืืื ืื ืืืืืช ืื ืืืจืื, ืื ืืืืื ืคืื ืงืฆืืืช ืฉืชืืฆืืืชืืื ืชืืืืืช ืืกืืจ ืืจืฉืืืืช. ืืืืจื ืืืืข ืงืืืกืืื ืื ืืืื ืขื ืขืืงืจืื ืืืจ ืืืืจื - ืืืืืฆืืื ืืืกืฃ ืจืฉืืืืช ืืกื, ืืืฉืจ ืกืืจ ืืจืฉืืืืช, ืืืืคื ืขืงืจืื ื, ืืื ื ืืืืืจ.
- ืึถืงืืึนืจ. ืืืงืฉืจ ืฉื KDB+, ืืืื ืจืฉืืื ืฉื ืืกืืืืช ืืืืชื ืกืื ืืืืื, ืืืฉื, ืืกืคืจืื. ืืืืืื ืืืจืืช, ืืขืจื ืฉื ืืืื ืืื. ื ืืชื ืืืืกื ืืขืจืืื, ืื ืืืื ืืจืฉืืืืช, ืืฆืืจื ืงืืืคืงืืืช ืืืขืื ืืืืฆืขืืช ืืืจืืืช ืืขืื ืืงืืืจ.
ืืืกืืืจืื
KX ื ืืกืื ืืฉื ืช 1993 ืขื ืืื ืืจืชืืจ ืืืื ื, ืฉืขืื ืืขืืจ ืืื ืง ืืืจืื ืกืื ืื ืขื ืฉืคืช A+, ืืืืจืฉืช ืฉื APL - ืฉืคื ืืงืืจืืช ืืืื ืืืขืชืื ืคืืคืืืจืืช ืืขืืื ืืคืื ื ืกื. ืืืืื, ื-KX, ืืจืชืืจ ืืืฉืื ืืืืชื ืจืื ืืืฆืจ ืืช ืืฉืคื ืืืืงืืืจืืช-ืคืื ืงืฆืืื ืืืช K, ืืืื ืื ืขื ืืื ืจืขืืื ืืช ืืืื ืืืืืื ืืจืืืงืื. ืชืืื ืืืช K ื ืจืืืช ืืื ืขืจืืืืื ืฉื ืกืืื ื ืคืืกืืง ืืชืืืื ืืืืืืื, ืืืฉืืขืืช ืฉื ืกืืื ืื ืืคืื ืงืฆืืืช ืชืืืื ืืืงืฉืจ, ืืืื ืคืขืืื ืืฉ ืืจืื ืืืชืจ ืืฉืืขืืช ืืืฉืจ ืืฉืคืืช ืชืื ืืช ืงืื ืื ืฆืืื ืืืืช. ืืฉื ืื, ืชืืื ืืช K ืชืืคืกืช ืืงืื ืืื ืืืื - ืืื ืฉืืจืืช ืืืืืืช ืืืืืืฃ ืืคื ืืงืกื ืืฉืคื ืืืืืืืช ืืื Java - ืืืื ืืืฉืื ืกืืคืจ ืืจืืื ืฉื ืืืืืืจืืชื.
ืคืื ืงืฆืื ื-K ืืืืืฉืืช ืืช ืจืื ืืืืื ืื ืชื LL1 ืืคื ืืงืืืง ื ืชืื:
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, ืืืืชืืจืืื - ืชืืืื ืืืืืืืช ืืกืื ื ืชืื ื ืืขืจืืช, ืืืื ืืขืืืื ืขื ืืืืืืช ืืืืืจืื ืืืืืกืง ืืื'.
ืื ืื ืงืืืช ืืื ืฉื ืืฉืชืืฉ, KDB+ ืืื ืคืฉืื ืืชืืจืืื ืืฉืคืช Q ืขื ืชืืืื ืืืืืืืช ืืืืืืืื ืืกืื ืื LINQ ืืืืื SQL ื-C#. ืืื ืืืืื ืืืฉืื ืืืืชืจ ืืื KDB+ ืืืื ืืกืื ื ืชืื ืื ืืืจืื ืืืืชืจืื ืืชืืจืืชื ืืขืืงืจื ืฉืื, ืฉืืขืชืื ืงืจืืืืช ืืชืขืืืื ืืื ื. ืื ืืื ื ืืกื ื ืชืื ืื + ืฉืคืช ืขืืจ ืืืฉืืชืช, ืืื ืฉืคืช ืชืื ืืช ืืืงื ืืืื + ืชืืืื ืืืื ืืช ืืคืื ืงืฆืืืช ืืกื ื ืชืื ืื. ืืืื ื ืื ืชืืื ืชืคืงืื ืืืจืืข ืืจืฉืืืช ืื ืืืชืจืื ืืช ืฉื KDB+. ืืืืืืโฆ
ืืืื
ืืกืื ืืจืืื ืืืืจื ืืื, KDB+ ืืื ืคืฉืื ืืืืื ืืืงืจืืกืงืืคื. ืื ืืืฉ ืงืืืฅ ืืคืขืื ืืื ืฉื ืชืช ืืื-ืืืื ืืงืืืฅ ืืงืกื ืงืื ืืื ืขื ืืื ืคืื ืงืฆืืืช ืืขืจืืช. ืืืฆืืืืช - ืคืืืช ืืืื-ืืืื ืืื, ืืขื ืืชืืื ืืช ืืื ืืฉืืืืช ืืืจืืช ืขืฉืจืืช ืืืคื ืืืืจืื ืืฉื ื ืขื ืืขืื ืืื ืืฉืจืช.
- ืืืื ืื ืืืคืฉืจ ื-KDB+ ืืืจืืืฉ ื ืืืจ ืืื ืืืืจื - ืืืืงืจื-ืืืฉื Pi ืืขื ืืฉืจืชืื ืขื ืืจื-ืืืื ืฉื ืืืืจืื. ืื ืื ืืฉืคืืข ืืฉืื ืฆืืจื ืขื ืืคืื ืงืฆืืื ืืืืช; ืืชืจ ืขื ืื, Q ืืชืืื ืืืืคื ืืืืื, ืื ืฉืืืคืฉืจ ืืืฉืชืืฉ ืื, ืืื ืืืชืจ, ืืฉืคืช ืกืงืจืืคื.
- ืืืืื ืื, ืืชืืจืืื Q ืืชืืื ืืืืืืื ืืืืืื ืืืขืื, ืื ืฉืืืืฅ ืืช ืืืฆืืข ืืชืืื ืืช.
- ืขื ืืืื ืื ืฉื ืงืืืฅ ืืืคืขืื, ืชืืืื Q ืชืืคืก ืืงืื ืื ืื ืืืืืจืื; ืืชื ืืืื ืืืคืขืื ืืืืช ืืื. ืืชืจื ืืื, ืืืืืช ืืฆืืจื, Q ืืืื ืืคืขืื ืขื ืขืฉืจืืช ืื ืืืืช ืืืื-ืืืื ืฉื ืืืืจืื ืืชืื ืชืืืื ืืืื.
ืฆืืืืืช
Q ื ืืืจ ืขืืืจ ืืืืื ืจืื ืฉื ืืืฉืืืื. Process Q ืืืื ืืคืขืื ืืืกื ื ืชืื ืื ืืืกืืืจื ืืืกืคืง ืืืฉื ืืืืจื ืืืจื-ืืืื ืฉื ืืืืข. ืืืืืื, ืืฉ ืื ื ืขืฉืจืืช ืืืืจื ืืืืข ืืืกืืืจืืื, ืฉืืืืงื ืืื ืืื ืื ืืืืก ืฉื ื ืชืื ืื ืชืืคืก ืืืชืจ ื-100 ืืืื-ืืืื. ืขื ืืืช, ืชืืช ืืืืืืช ืกืืืจืืช, ืฉืืืืชื ืืืกื ืื ืชืื ืื ืชืืฉืื ืชืื ืขืฉืจืืช ืขื ืืืืช ืืืคืืืช ืฉื ืืืช. ืืืืคื ืืืื, ืืฉ ืื ื ืคืกืง ืืื ืืื ืืืจืกืื ืืืงืฉืืช ืืฉืชืืฉืื - 30 ืฉื ืืืช - ืืื ืขืืื ืืขืชืื ืจืืืงืืช ืืืื.
Q ืืืื ืืืืชื ืงืืืช ืืืืืช ืืกื ื ืชืื ืื ืืืืืจืื. ื ืชืื ืื ืืืฉืื ืืชืืืกืคืื ืืืืืืืช ืืืืืจืื ืื ืื ืืืจ ืขื ืฉืืงืฉืืช ืืฉืชืืฉืื ืื ืืืืจื ืืืืืื. ืื ืชืื ืื ืืืืืืืช ืืืืืกื ืื ืืขืืืืืช, ืื ืฉืืืืจ ืฉืื ืคืขืืื ืืขืืืื ืชืฉืชืืฉ ืืืืืื ืืืขืื ืืงืืืืืช ืืืื. ืื ืืกืฃ ืืื, KX ื ืืกืชื ืืืืฉื ืืช ืื ืืคืขืืืืช ืืืกืืกืืืช ืืืื ืืฉืืื ืืืืฆืขืืช ืืืจืืืช ืืงืืืจืืืช ืฉื ืืืขืื, ืืืืงืกื ืืช ืืืืจืืชื. Q ืืืื ืื ืืืฆืข ืืฉืืืืช ืฉืืื ื ืืืคืืื ืืืช ืืืกืืกื ื ืชืื ืื - ืืืฉื, ืืขืื ื ืชืื ืื ืืืจืืื ืืืืฉื ื"ืืื ืืืช" (ืืืฉืืืื ืืขืฉืจืืช ืืืคืืืช ืฉื ืืืช ืืืกืคืจ ืฉื ืืืช ืืืชืื ืืืฉืืื) ืคืื ืงืฆืืืช ืฆืืืจื ืฉืื ืืช ืขืืืจ ืืืฉืืจืื ืคืื ื ืกืืื ืืืื ืฉืื ื ืืจืืืืื ืื ืืื ืืช ืืืื ืืืฉืคืขื ืฉื ืขืกืงืืืช ืืืฉืืืืช ืืฉืืง ืืืืฆืข ืืช ืืคืจืืคืื ืฉืื ืืืขื ืืื ืืืืจ ืืฉืืืชื. ืืืฉืืืืช ืืืื, ืืจืื ืขืืืื ืืืื ืืขืืงืจื ืืื ื Q, ืืื ืืฆืืจื ืืกื ืืจื ื ืชืื ืื ืืืงืืจืืช ืฉืื ืื. ืืืืจืืช ืืืืื ืืืฉืืช ืืฉื ืืขืืืื ืฉืื ืชืื ืื ืืืคืื ืงืฆืืืช ืืืขืืืืช ืืืชื ื ืืฆืืื ืืชืืืื ืืื, ืืืขืืืื ืืฆืืืฆื ืืืืฆืืข ืืกืคืจ ืืืืืื QSQL ื-Joins, ืฉืืื ื ืืชืคืจืฉืื, ืืื ืืืืฆืขืื ืขื ืืื ืงืื ืืื ืืจื.
ืืืกืืฃ, ืืชื ืืืื ืืืชืื ืื ืชืืืืื ืฉืืจืืช ื-Q. ืืืืืื, ืชืืืืื Gateway ืฉืืคืืฆืื ืืืืคื ืืืืืืื ืืงืฉืืช ืืฉืชืืฉืื ืืืกืืกื ืื ืชืื ืื ืืืฉืจืชืื ืืืจืืฉืื. ืืืชืื ืช ืืฉ ืืืคืฉ ืืืืื ืืืืฉื ืื ืืืืืจืืชื ืืืืืื, ืชืขืืืฃ, ืกืืืื ืืช ืชืงืืืช, ืืืืืืช ืืืฉื, ืืืกืืช ืืืขืฆื ืื ืืืจ ืืืจ ืฉืืื ืืคืฅ. ืืืขืื ืืขืืงืจืืช ืืื ืืื ืฉืชืฆืืจืื ืืืืฉื ืืช ืื ืื ืืขืฆืืื.
ืืืืืื, ืืคืจื ืืืื ืกืืื ืชืืืืืื ืืฉ ืื ื. ืืืื ื ืืฆืืื ืืฉืืืืฉ ืคืขืื ืืขืืืืื ืืื, ืืฉืืืื ืขืฉืจืืช ืืกืื ื ืชืื ืื ืฉืื ืื ืืืื, ืืขืืืื ื ืชืื ืื ืืืกืคืจ ืืงืืจืืช ืืืฉืจืชืื ืืืืช ืืฉืชืืฉืื ืืืืฉืืืื.
- ืืืืจืื (feedhandler) ืืืงืืจืืช ื ืชืื ืื. ืชืืืืืื ืืื ืืฉืชืืฉืื ืืืจื ืืื ืืกืคืจืืืช ืืืฆืื ืืืช ืื ืืขื ืืช ืืชืื Q. ืืืฉืง C ื-Q ืคืฉืื ืืืืชืจ ืืืืคืฉืจ ืื ืืืฆืืจ ืืงืืืช ืคืื ืงืฆืืืช ืคืจืืงืกื ืขืืืจ ืื ืกืคืจืืืช C/C++. Q ืืืืจ ืืกืคืืง ืืื ืืืคื, ืืืฉื, ืืขืืืื ืืืื ืฉื ืืืืขืืช FIX ืืื ืืืืจืกืืช ืืืืจืืคื ืื ืืื ืืช.
- ืืคืืฆื ื ืชืื ืื (ืืืงืจืฆืื), ืืืฉืืฉืื ืืงืฉืจ ืืื ืืื ืืื ืืืืจืื ืืฆืจืื ืื. ืืืงืืื, ืื ืืืชืืื ื ืชืื ืื ื ืื ืกืื ืืืืื ืืื ืืจื ืืืืื, ืืืกืคืงืื ืืืกื ืืฆืจืื ืื ืืคื ื ืืืืื ืืืืืจ ืื ืืคืขืื ืืืืฉ.
- ืืกื ื ืชืื ืื ืืืืืจืื (rdb). ืืกืื ื ืชืื ืื ืืื ืืกืคืงืื ืืช ืืืืฉื ืืืืืจื ืืืืชืจ ืื ืชืื ืื ืืืืืืื ืืจืขื ื ืื ืขื ืืื ืืืกืืื ืืืืืจืื. ืืืจื ืืื, ืื ืฆืืืจืื ื ืชืื ืื ืืืืืืืช ืืืืื ืืืื ืืืืคืกืื ืืืชื ืืืืื.
- ืืกื ื ืชืื ืื ืืชืืื (pdb). ืืืืจื ืืืืข ืืื ืืืืืืื ืฉืื ืชืื ืื ืืืืื ืืืืืกื ืื ืืืกื ื ืชืื ืื ืืืกืืืจื. ืืืื, ืื ืืืื ื-rdb, ืื ืื ืืืืจืื ื ืชืื ืื ืืืืืจืื, ืืื ืืฉืชืืฉืื ืืืืืื ืืืืื ืืืืกืง ืืืืื ืืืื ืืืขืชืืงืื ืืช ืื ืชืื ืื ืืืฆืืช ืืืกื ืื ืชืื ืื ืืืืกืืืจื.
- ืืืืจื ืืืืข ืืืกืืืจืืื (hdb). ืืืืจื ืืืืข ืืื ืืกืคืงืื ืืืฉื ืื ืชืื ืื ืฉื ืืืื, ืืืืฉืื ืืฉื ืื ืงืืืืื. ืืืืื ืฉืืื (ืืืืื) ืืืืื ืจืง ืขื ืืื ืืืื ืืืื ื ืื ืืงืฉืืืื. ื ืืชื ืืืชืจ ื ืชืื ืื ืืื ืืงืื, ืืืืืื ืืืืกืงืื ืฉืื ืื ืืื ืืืืืฅ ืืช ืืืืฉื. ื ืืชื ืืืืืก ื ืชืื ืื ืืืืฆืขืืช ืืกืคืจ ืืืืืจืืชืืื ืืืืืจื. ืืื ื ืืกื ืื ืชืื ืื ืืชืืขื ืืืื ืืคืฉืื, ืื ืชืื ืื ืืืืืกื ืื ืืืจ ืืืจ ืืืจ ืืงืืฆืื ืจืืืืื, ืื ืฉื ืืชื ืืขืื ืืืชื, ืืืื ืืืืฆืขืืช ืืขืจืืช ืืืคืขืื.
- ืืืืจื ืืืืข ืขื ืืืืข ืืฆืืืจ. ืื ืืืืกื ืื ืฆืืืจืืช ืฉืื ืืช, ืืืจื ืืื ืขื, ืืงืืืฆืืช ืืคื ืฉื ืืืืฉืืจ ืืืจืืื ืืื. ืืกืื ื ืชืื ืื ืืืืืจืื ืืขืืื ืื ืืช ืืฆืื ืขื ืื ืืืืขื ื ืื ืกืช, ืืืกืื ื ืชืื ืื ืืืกืืืจืืื ืืืืกื ืื ื ืชืื ืื ืืืืฉืืื ืืจืืฉ ืืื ืืืืืฅ ืืช ืืืืฉื ืื ืชืื ืื ืืืกืืืจืืื.
- ืืืกืืฃ, ืชืืืืื ืฉืขืจืฉืืจืืช ืืคืืืงืฆืืืช ืืืฉืชืืฉืื. Q ืืืคืฉืจืช ืืืืฉื ืขืืืื ืืกืื ืืจืื ื ืืืืืืื ืฉื ืืืืขืืช ื ืื ืกืืช, ืืคืฆืชื ืืื ืืกืื ื ืชืื ืื, ืืืืงืช ืืืืืืช ืืืฉื ืืื'. ืฉืืื ืื ืฉืืืืขืืช ืืื ื ืืืืืืืช ืืืจืื ืืื ื ืืืืืื SQL, ืืคื ืฉืงืืจื ืืืกืื ื ืชืื ืื ืืืจืื. ืืจืื, ืืืืื ื-SQL ืืืกืชืจ ืืคืื ืงืฆืื ืืืืืืช ืืืื ืื ืื ืขื ืกืื ืืคืจืืืจืื ืืืืืงืฉ ืขื ืืื ืืืฉืชืืฉ - ืืืื ืืืืจ, ืืกืื ื, ืื ืืจืื ื ืชืื ืื (ืืืืืื, ืืืืจ ืืื ืื ืืฉืชืืื ืื ืฉืืืื ืืืืืื ืืื) ืืื'.
ืืจืืืืงืืืจื ืืืคืืื ืืช ืืกืื ื ืชืื ืื ืืื:
ืืืืจืืช
ืืืจืืช ืฉ-Q ืืื ืฉืคื ืืชืคืจืฉืช, ืืื ืื ืฉืคื ืืงืืืจืืช. ืืืฉืืขืืช ืืื ืฉืืจืื ืคืื ืงืฆืืืช ืืืื ืืช, ืืืืืื ืืจืืชืืืืืช, ืืืืฉืืช ืืจืืืื ืืื ืืื ืฆืืจื ืฉืืื - ืืกืคืจืื, ืืงืืืจืื, ืืืจืืฆืืช, ืจืฉืืืืช - ืืืืชืื ืช ืฆืคืื ืืืืฉื ืืช ืืชืืื ืืช ืืคืขืืืืช ืืขืจื. ืืฉืคื ืืื, ืื ืืืกืืคืื ืฉื ื ืืงืืืจืื ืฉื ืืืืืื ืืืื ืืื, ืื ืืืจ ืื ืืฉื ื ืฉืืฉืคื ืชืชืคืจืฉ, ืืชืืกืคืช ืชืชืืฆืข ืขื ืืื ืคืื ืงืฆืื ืืื ืืจืืช ืกืืคืจ-ืืืคืืืืืืช. ืืืืืื ืฉืืืง ืืืจื ืฉื ืืืื ืืชืืื ืืืช Q ืืืฉืงืข ืืคืขืืืืช ืขื ืืืืืืช ืืืฉืชืืฉืืช ืืคืื ืงืฆืืืช ืืืืงืืืจืืืช ืืืกืืกืืืช ืืืื, ืืคืื ืืื ืืืืจืืช ืคืขืืื ืืืื ื ืืืื, ืืืืคืฉืจืช ืื ื ืืขืื ืืืืช ืขืฆืืื ืฉื ื ืชืื ืื ืืคืืื ืืชืืืื ืืื. ืื ืืืื ืืกืคืจืืืช ืืชืืืืืช ื-Python - ืืืจืืช ืฉ-Python ืขืฆืื ืืื ืฉืคื ืืืื ืืืืืช, ืืฉ ืื ืืจืื ืกืคืจืืืช ืืฆืืื ืืช ืืื numpy ืฉืืืคืฉืจืืช ืืขืื ื ืชืื ืื ืืกืคืจืืื ืืืืืจืืช ืฉื ืฉืคื ืืืืืจืช (ืืื, numpy ืงืจืืื ืืืืืืืืืืืช ื-Q ).
ืื ืืกืฃ, KX ื ืงืื ืืืืฉื ืืืืจื ืืืื ืืขืืฆืื ืืืืืืช ืืืืขืื ืืขืืืื ืืืชื. ืจืืฉืืช, ื ืชืืืื ืืกืคืจ ืกืืืื ืฉื ืืื ืืงืกืื, ืื ืชืืืื ืขื ืืื ืคืื ืงืฆืืืช ืืืื ืืช ืื ืืชื ืืืืื ืืืชื ืื ืจืง ืขื ืขืืืืืช ืืืื, ืืื ืื ืขื ืื ืืงืืืจ - ืงืืืืฅ, ืืืื, ืชืืื ืช ืืืืืืืืช ืืงืืืืฅ ืืืืื ืขืืืจ ืืกืื ื ืชืื ืื ืืืกืืืจืืื. ืืืื ืืงืก ืืืืฉื ืืคืฉืืืช ืืืื ืืืชืื ืืืืืืืืช ืืขืช ืืืกืคืช ืืืื ืืื ืืขืืืื/ืืงืืืจ. ื ืืชื ืืืืื ืืช ืืืื ืืงืกืื ืืืฆืืื ืืืืชื ืืืื ืขื ืขืืืืืช ืืืื ืื ืืืืืจืื ืืื ืืืืกืง. ืืขืช ืืืฆืืข ืฉืืืืชืช QSQL, ื ืขืฉื ืฉืืืืฉ ืืืืืืื ืืืื ืืงืกืื ืืืืืช ืืืคืฉืจ. ืฉื ืืช, ืืขืืืื ืขื ื ืชืื ืื ืืืกืืืจืืื ื ืขืฉืืช ืืืืฆืขืืช ืื ืื ืื ืืฆืืช ืงืืฆื ืืขืจืืช ืืืคืขืื (ืืคืช ืืืืจืื). ืืืืืืช ืืืืืืช ืืขืืื ืืื ื ื ืืขื ืืช ืืืืืจืื; ืืืงืื ืืืช, ืืขืืืืืช ืื ืืืฆืืช ืืืคืืช ืืฉืืจืืช ืืืืืจืื ืืจืง ืืืชื ืืืง ืืื ื ืืขื ืืคืืขื (ืืื ืืงืกืื ืขืืืจืื ืื ืืื) ืืืจืืฉืื. ืื ืื ืืฉื ื ืืืชืื ืช ืื ืื ืชืื ืื ื ืืฆืืื ืืืืืจืื ืื ืื; ืื ืื ืื ืืขืืืื ืขื mmap ืืืื ืืืืืืื ืืืขืืงื ื-Q.
KDB+ ืืื ื ืืกื ื ืชืื ืื ืืืกื; ืืืืืืช ืืืืืืช ืืืืื ื ืชืื ืื ืฉืจืืจืืชืืื, ืืขืื ืฉืกืืจ ืืฉืืจืืช ืืืืื ืืื ื ืืฉืชื ื ืืืฉืจ ืืืื ืืื ืืืฉืื ืืชืืืกืคืื ืืืคืฉืจ ืืฆืจืื ืืืฉืชืืฉ ืืื ืืขืช ืืชืืืช ืฉืืืืชืืช. ืชืืื ื ืื ื ืืืฆื ืืืืืคืืช ืืขืืืื ืขื ืกืืจืืช ืืื (ื ืชืื ืื ืืืจืืืืืช, ืืืืืจืื, ืืืื ื ืืืจืืขืื), ืืืืืื ืฉืื ืื ืชืื ืื ืืืืื ืื ืืคื ืืื, ืื ืืืฉืชืืฉ ืื ืฆืจืื ืืืฉืชืืฉ ืืฉืื ืืจืืงืื ืฉื SQL ืืื ืืืฆืื ืืช ืืฉืืจื ืืจืืฉืื ื ืื ืืืืจืื ื ืื N ืฉืืจืืช ืืืืื , ืงืืข ืืืื ืฉืืจื ืืืจื ืืงื ื-N' ืืื'. ืฆืืจืืฃ ืืืืืืช ืืคืืฉื ืขืื ืืืชืจ, ืืืฉื, ืืฆืืืช ืืฆืขืช ืืืืืจ ืืืืจืื ื ืขืืืจ 16000 ืขืกืงืืืช VOD.L (Vodafone) ืืืืื ืฉื 500 ืืืืืื ืืืื ืืื ืืืงืืช ืืขืจื ืฉื ืื ืืืืกืง ืืขืฉืจืืช ืืืคืืืช ืฉื ืืืช ืืืืืจืื.
ืืืืื ื-time join - ืืืืช ืืฆืืืืืื ืืืืคื ืืืืืจืื, ืื ืฉืืื ืฆืืจื ืืฆืืื VOD.L ืืืื, ื ืขืฉื ืฉืืืืฉ ืืจืืื ืืืื ืืงืก ืืขืืืืช sym ืืืขืืืื ืฉืื ืชืื ืื ืืืืื ืื ืืคื ืืื. ืืืขื ืื ืืฆืืจืืคืื ื-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), ืืืขืืื ืื ืื ืกืืช ืืืกืื ืืกืฃ ืขื ืืื ืืืืคืช ืคืขืืืืช ืืงืืืจืืืช ืืืืืืืืช. ืืืืืื, ืืื ืืืฆืื ืืช ืืืื ืืงืก ืฉื ืืืืคืข ื-N ืฉื ืืืื ื ืืืขืจื, ืขืืื ืืืชืื:
1. (where element=vector)[N]
ืืืจืืช ืฉืื ื ืจืื ืืืื ืื ืืขืื ืืคื ืชืงื ื C/Java (= ืืืฆืจ ืืงืืืจ ืืืืืื ื, ืฉืื ืืืืืจ ืืช ืืืื ืืงืกืื ืืืืืชืืื ืฉื ืืืืื ืืื ืื). ืืื ืืกืืืื ืืื ืืืืืจ ืืช ืืฉืืขืืช ืืืืืื ืืืชื ืืฉืชืืฉ ืืคืขืืืืช ืืงืืืจืืืช ืืืืจืืช ืืืงืื ืืืืืืืืช ืืืืืืช. ืืืืื ืืจืขืืื ื ืืื ืฉืคื ืืงืืืจืืช ืืืืจืืช ืืืื ืืืืื ืืื ืืืฉืืช ืฆืืืื ืืคืื ืงืฆืืื ืืืืช ืืชืื ืืช, ืืืชื ืฆืจืื ืืืืืช ืืืื ืืื.
ืืืง ืืืืฉืชืืฉืื ืื ืื ืืจืืฆืื ื-QSQL. ืื ืงืืื ืืื ืฉืื ื ืจืื ืจืง ืืื SQL ืืืืชื. ืืืฆืืืืช, ืืื ืจืง ืืชืืจืืื ืฉื ืืืืืืื ืืืืื SQL ืฉืืื ื ืชืืื ืืืืคืืืืืืฆืื ืฉื ืฉืืืืชืืช. ืืืฉืชืืฉ ืืืื ืืืชืื ืฉืืืืชืืช ืืืคืืืืืืืช ืืขืฆืื, ืื-Q, ืฉืจืืื ืื ืืืื ืื ืืื. ืืฆื ืฉื ื, ืืืืื, ืืชื ืชืืื ืืืื ืืืชืื ืืช ืืฉืืืืชื ืืืืคืืืืืืช ืืขืฆืื, ืืืงืื ืืืกืชืื ืขื ืืืืขื ืงืืคืกื ืฉืืืจื.
ืืชืืจ ืืชืจืื, ืกืคืจ ืขื Q - Q For Mortals ืืืื ืืืื ื ืืืชืืืช
ืืืกืจืื ืืืื ื ืืกืฃ ืืื ืขืืืช ืืจืืฉืืื. ืื ืขืฉืจืืช ืืืคื ืืืืจืื ืืฉื ื ืืืขืื. ืจืง ืืืจืืช ืืืืืืช ืืืืืืช ืืขืืื ืืืืฆืืืช ืืืื. ืืืืจืื ื, KX ืืืืืฉื ืืช ืืืื ืืืช ืืจืืฉืื ืฉืื ืืืกืคืงืช ืืช ืืืคืฉืจืืช ืืฉืื ืจืง ืขืืืจ ืืื ืืฉืืืืฉ ืื ืืฉืืืจ ืืช KDB+ ืืขื ื ืื ืฉื ืืืื ืืืืืื. KX ืืฆืืขื ืื ืืืืจืื
ืืืชืืจื
ืืฉื ื ืื ืืขื ืืกืื ื ืชืื ืื ืืืืืืื ืืื ืืืื ืขื ืขืงืจืื ืืช ืืืืื - ืขืืืืื, ืืืืืจืื, ืืืืงืืื ืืืืืืืช ืืืืืืช ืืืื ืฉื ื ืชืื ืื. ืืืขืื ืืื ืฉืืืืืจ ืืืืืจื ืืืืข ืืืืืืื. ืืืืื ืืืืืช ืืื Clickhouse. ืืืกื ื ืชืื ืื ืื ืืฉ ืขืืงืจืื ืืืื ืืืื ื-KDB+ ืขืืืจ ืืืกืื ื ืชืื ืื ืืืืกืง ืืื ืืืช ืืื ืืงืก; ืืื ืืืฆืข ืืื ืฉืืืืชืืช ืืืจ ืืืชืจ ื- KDB+, ืื ืื ืื ืืืืคื ืืฉืืขืืชื. ืืื ืื ืืชืืจ ืืกื ื ืชืื ืื, Clickhouse ืืชืืื ืืืชืจ ื-KDB+ โ Web Analytics ืืขืืืช ืกืืจืืช ืืื ืฉืจืืจืืชืืืช (ืืืืื ืืื ืืฉืื ืืืื โ ืืืืื, ืืืฉื, ื-Clickhouse ืื ื ืืชื ืืืฉืชืืฉ ืืกืืืืจ ืืจืฉืืืืช). ืืื, ืืืื ืืฉืื, ื- Clickhouse ืืื ืืช ืืจืืืื ืืืช ืฉื KDB+, ืฉืคื ืฉืชืืคืฉืจ ืขืืืื ื ืชืื ืื ืืฉืืจืืช ืืืกื ืื ืชืื ืื, ืืืงืื ืืืขืื ืืืชื ืชืืืื ืืืคืืืงืฆืื ื ืคืจืืช, ืื ืืืช ืืืืืื SQL ืฉืจืืจืืชืืื, ืืืฉืื ืคืื ืงืฆืืืช ืฉืจืืจืืชืืืช ืืฉืืืืชื, ืืฆืืจืช ืชืืืืืื ืื ืงืฉืืจ ืืืืฆืืข ืคืื ืงืฆืืืช ืฉื ืืกื ื ืชืื ืื ืืืกืืืจื. ืืื, ืงืฉื ืืืฉืืืช ืืช KDB+ ืขื ืืกืื ื ืชืื ืื ืืืจืื; ืื ืขืฉืืืื ืืืืืช ืืืืื ืืืชืจ ืืืงืจืื ืืกืืืืื ืฉื ืฉืืืืฉ ืื ืคืฉืื ืืืืื ืืืชืจ ืืฉืืืืืจ ืืืฉืืืืช ืืกื ื ืชืื ืื ืงืืืกืืืช, ืืื ืื ื ืื ืืืืจ ืขืื ืืื ืืขืื ืืจื-ืชืืืืชื ืื ืคืืืช ืืขืืืื ื ืชืื ืื ืืื ืืื.
ืืื ืืืจืฆืื ืฉื ืคืืืชืื
ืืื ืืืงื ืขื ืืฉืืืืฉ ื-KDB+ ืขืืืจ ืื ืฉืื ืฉืืื ื ืืืืจืื ืืช ืืืื ืืืืืื, KX ืืฆืจื ืกืคืจืืืช ืืฉืืืื ืืืืง ืขื Python ืืชืื ืชืืืื ืืื. ืืชื ืืืื ืืงืจืื ืืื ืคืื ืงืฆืื ืฉื Python ื-Q, ืื ืืืืคื - ืืงืจืื ืืื ืคืื ืงืฆืื Q ื-Python (ืืคืจื, ืืืืืื QSQL). ืกืคืจืืืช ืืืืจืืช, ืืืืืช ืืฆืืจื (ืื ืชืืื ืืืขื ืืืขืืืืช), ื ืชืื ืื ืืคืืจืื ืฉื ืฉืคื ืืืช ืืคืืจืื ืฉื ืฉืคื ืืืจืช. ืืชืืฆืื ืืื, Q ื-Python ืืืื ืืกืืืืืืื ืื ืงืจืืื ืขื ืฉืืืืืืืช ืืื ืืื ืืืืฉืืฉืื. ืืชืืฆืื ืืื, ืืืชืื ืช, ืืฆื ืืื, ืืฉ ืืืฉื ืืืื ืืืกืคืจ ืจื ืฉื ืกืคืจืืืช Python ืฉืืืืฉืืืช, ืืฆื ืฉื ื, ืืื ืืงืื ืืกืืก ืืืืจ ืืขืืืื ืขื ื ืชืื ืื ืืืืืื ืืืฉืืืืื ื-Python, ืืืจ ืฉืืืืฉื ืืืืืื ืขืืืจ ืืขืืกืงืื ืืืืืืช ืืืื ื. ืื ืืืืื ืืช.
ืขืืืื ืขื Q ื-Python:
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')
ืชืืืืจ
ืืชืจ ืืืืจื -
ืืชืจ ืืืคืชืืื -
ืกืคืจ Q ืขืืืจ ืื ื ืชืืืชื (ืืื ืืืืช) -
ืืืืจืื ืขื ืืืฉืืื KDB+/Q ืืขืืืื kx -
ืืงืืจ: www.habr.com