ãã®èšäºã§ã¯ãKDB +ã®æŠèŠãKDB +ã®æ©èœãšå¶éã倧éã®ããŒã¿ã®åŠçãåžæããäŒæ¥ã«ãšã£ãŠã®ã¡ãªããããäŒãããŸãã KDB +ã®å®è£ ã®è©³çŽ°ãšQããã°ã©ãã³ã°èšèªã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸãããããããã®ãããã¯ã¯ã©ã¡ããéåžžã«åºç¯å²ã«ããããããå¥ã®èšäºã«å€ããŸãã ãããã®ãããã¯ã«é¢ããå€ãã®æ å ±ã¯ãQ.Q For Mortalsã®æ¬ãå«ãcode.kx.comã§èŠã€ããããšãã§ããŸãïŒä»¥äžã®ãªã³ã¯ãåç §ïŒã
ããã€ãã®çšèª
- ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã é«éã¢ã¯ã»ã¹ã®ããã«ããŒã¿ãRAMã«ä¿åããããŒã¿ããŒã¹ã ãã®ãããªããŒã¿ããŒã¹ã®å©ç¹ã¯ç解ã§ããæ¬ ç¹ã¯ããŒã¿æ倱ã®å¯èœæ§ããµãŒããŒäžã«å€§éã®ã¡ã¢ãªãå¿
èŠãšããããšã§ãã
- åããŒã¿ããŒã¹ã ã¬ã³ãŒãããšã«ã§ã¯ãªããããŒã¿ãé£ç¶ããŠæ ŒçŽãããããŒã¿ããŒã¹ã ãã®ãããªããŒã¿ããŒã¹ã®äž»ãªå©ç¹ã¯ã1ã€ã®åããã®ããŒã¿ããã£ã¹ã¯ãšã¡ã¢ãªã«äžç·ã«æ ŒçŽãããããšã§ããããã«ãããåãžã®ã¢ã¯ã»ã¹ã倧å¹
ã«é«éåãããŸãã èŠæ±ã§äœ¿çšãããŠããªãåãããŒãããå¿
èŠã¯ãããŸããã äž»ãªæ¬ ç¹ã¯ãã¬ã³ãŒãã®å€æŽãšåé€ãé£ããããšã§ãã
- æç³»åã æ¥ä»ãæå»ãªã©ã®åãæã€ããŒã¿ã ååãšããŠããã®ãããªããŒã¿ã§ã¯æéã«ããé åºä»ããéèŠã§ãããããçŸåšã®ã¬ã³ãŒãã®åãŸãã¯åŸã®ã¬ã³ãŒããç°¡åã«å€å¥ããããçµæãã¬ã³ãŒãã®é åºã«äŸåããé¢æ°ãé©çšãããã§ããŸãã å€å
žçãªããŒã¿ããŒã¹ã¯ãå®å
šã«ç°ãªãåçã«åºã¥ããŠæ§ç¯ãããŠããŸã-ã¬ã³ãŒãã®ã»ãããã»ãããšããŠè¡šããã¬ã³ãŒãã®é åºã¯ååçã«å®çŸ©ãããŠããŸããã
- ãã¯ãã«ã ã³ã³ããã¹ãã§ã¯ãKDB +ã¯ãæ°å€ãªã©ã®åãã¢ãããã¯ã¿ã€ãã®èŠçŽ ã®ãªã¹ãã§ãã ã€ãŸããèŠçŽ ã®é
åã ãªã¹ããšã¯ç°ãªããé
åã¯ã³ã³ãã¯ãã«æ ŒçŽãããã¯ãã«ããã»ããµåœä»€ã䜿çšããŠåŠçã§ããŸãã
æŽå²çèæ¯
KXã¯1993幎ã«ã¢ãŒãµãŒãã€ããããŒã«ãã£ãŠèšç«ãããŸãããã¢ãŒãµãŒãã€ããããŒã¯ãéèæ¥çã§éåžžã«ç¬åµçã§äººæ°ã®ããèšèªã§ããAPLã®åŸç¶è ã§ããA +ã§ã¢ãŒã¬ã³ã¹ã¿ã³ã¬ãŒãšäžç·ã«åããŠããŸããã ãã¡ãããKXã§ã¯ãã¢ãŒãµãŒã¯åã粟ç¥ã§ç¶ããéæ¿ãªããããªãºã ã®ã¢ã€ãã¢ã«å°ãããŠããã¯ãã«é¢æ°èšèªKãäœæããŸããã Kããã°ã©ã ã¯ãå¥èªç¹ãšç¹æ®æåã®ä¹±éãªã»ããã®ããã«èŠããæåãšæ©èœã®æå³ã¯ã³ã³ããã¹ãã«äŸåããåæäœã¯éåžžã®ããã°ã©ãã³ã°èšèªãããã¯ããã«å€ãã®æå³ãæã¡ãŸãã ãã®ãããKããã°ã©ã ã¯æå°éã®ã¹ããŒã¹ãå æããŸãïŒJavaãªã©ã®åé·èšèªã®ããã¹ãã®ããŒãžãæ°è¡ã§çœ®ãæããããšãã§ããŸãïŒãããã¯ãã¢ã«ãŽãªãºã ã®éåžžã«éäžçãªå®è£ ã§ãã
äžããããææ³ã«åŸã£ãŠ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;"(",]}({$[".sC"~4#x;6_-2_x;x]}'pp'x);'`pp]; 6. $[@r;r;($[1<#r;".s.";""],$*r),$[1<#r;"[",(";"/:1_r),"]";""]]}
ã¢ãŒãµãŒã¯ã2003幎ã«ç»å ŽããKDB +ã®æå°éã®äœã®åãã§ãã®éåžžã«å¹ççãªå²åŠãå ·çŸåããŸããïŒããã¯ãæåKã®ååã®ç±æ¥ãæ確ã«ãªã£ããšæããŸãïŒãèšèªKã®4çªç®ã®ããŒãžã§ã³ã®ã€ã³ã¿ãŒããªã¿ãŒã«ãããŸããã Qãšããååã®KãQã¯ãç¹å®ã®SQLæ¹èš-QSQLã®ãµããŒããããã³ã€ã³ã¿ãŒããªã¿ãŒ-ã·ã¹ãã ããŒã¿åãšããŠã®ããŒãã«ã®ãµããŒããã¡ã¢ãªããã³ãã£ã¹ã¯äžã®ããŒãã«ãæäœããããã®ããŒã«ãªã©ãè¿œå ããŸããã
ãããã£ãŠããŠãŒã¶ãŒã®èŠ³ç¹ããèŠããšãKDB +ã¯ãããŒãã«ããã³CïŒããã®SQLã®ãããªLINQã¹ã¿ã€ã«ã®åŒããµããŒãããQèšèªã€ã³ã¿ãŒããªã¿ãŒã«ãããŸããã ããã¯ãKDB +ãšä»ã®ããŒã¿ããŒã¹ã®æãéèŠãªéãã§ãããèŠèœãšãããã¡ãªäž»ãªç«¶äºäžã®åªäœæ§ã§ãã ããã¯ãããŒã¿ããŒã¹+é害è åãã®è£å©èšèªã§ã¯ãªããæ¬æ ŒçãªåŒ·åãªããã°ã©ãã³ã°èšèª+ããŒã¿ããŒã¹æ©èœã®çµã¿èŸŒã¿ãµããŒãã§ãã ãã®éãã¯ãKDB +ã®ãã¹ãŠã®å©ç¹ããªã¹ãããäžã§æ±ºå®çãªåœ¹å²ãæãããŸãã ããšãã°...
倧ãã
çŸä»£ã®æšæºã§ã¯ãKDB +ã¯ã»ãã®å°ããªãµã€ãºã§ãã ããã¯ãæåéã1ã¡ã¬ãã€ãããå°ãã1ã€ã®å®è¡å¯èœãã¡ã€ã«ãšãããã€ãã®ã·ã¹ãã æ©èœãåãã1ã€ã®å°ããªããã¹ããã¡ã€ã«ã§ãã å®éã«ã¯ã1ã¡ã¬ãã€ãæªæºã§ããããã®ããã°ã©ã ã®å ŽåãäŒæ¥ã¯ãµãŒããŒäžã®1ã€ã®ããã»ããµã«å¯ŸããŠå¹Žéæ°äžãã«ãæ¯æããŸãã
- ãã®ãµã€ãºã«ãããKDB +ã¯ãPiãã€ã³ã³ãããã©ãã€ãã®ã¡ã¢ãªãæèŒãããµãŒããŒãŸã§ãããããããŒããŠã§ã¢ã§å¿«é©ã«äœ¿çšã§ããŸãã ããã¯æ©èœã«åœ±é¿ãäžããããšã¯ãããŸãã;ããã«ãQã¯ããã«èµ·åãããããã¹ã¯ãªããèšèªãšããŠäœ¿çšããããšãã§ããŸãã
- ãã®ãµã€ãºã§ã¯ãQã€ã³ã¿ãŒããªã¿ãŒã¯ããã»ããµãŒãã£ãã·ã¥ã«å®å
šã«é
眮ãããããã°ã©ã ã®å®è¡ãé«éåãããŸãã
- ãã®ãµã€ãºã®å®è¡å¯èœãã¡ã€ã«ã§ã¯ãQããã»ã¹ãåãã«è¶³ããªãã¡ã¢ãªç©ºéãå æãããããæ°çŸã§å®è¡ã§ããŸãã åæã«ãå¿
èŠã«å¿ããŠãQã¯1ã€ã®ããã»ã¹ã®ãã¬ãŒã ã¯ãŒã¯ã§æ°åãŸãã¯æ°çŸã®ã¬ãã€ãã®ã¡ã¢ãªã§åäœã§ããŸãã
æ±çšæ§
Qã¯ããŸããŸãªã¿ã¹ã¯ã«æé©ã§ãã Qããã»ã¹ã¯å±¥æŽããŒã¿ããŒã¹ãšããŠæ©èœãããã©ãã€ãåäœã®æ å ±ã«ãã°ããã¢ã¯ã»ã¹ã§ããŸãã ããšãã°ãæ°åã®å±¥æŽããŒã¿ããŒã¹ãããããã®ãã¡ã®ããã€ãã¯ãéå§çž®ããŒã¿ã®1æ¥ã§100ã®ã¬ãã€ã以äžãå ããŠããŸãã ãã ããåççãªå¶éãããå ŽåãããŒã¿ããŒã¹ã¯ãšãªã¯æ°åããªç§ããæ°çŸããªç§ã§å®è¡ãããŸãã äžè¬ã«ããŠãŒã¶ãŒãªã¯ãšã¹ãã®ãŠãããŒãµã«ã¿ã€ã ã¢ãŠãïŒ30ç§ïŒããããã»ãšãã©åäœããŸããã
åãããã«ç°¡åã«ãQã¯ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã«ããããšãã§ããŸãã ã¡ã¢ãªå ã®ããŒãã«ãžã®æ°ããããŒã¿ã®è¿œå ã¯éåžžã«é«éã§ããããããŠãŒã¶ãŒã¯ãšãªã¯å¶éèŠå ã§ãã ããŒãã«å ã®ããŒã¿ã¯åã«æ ŒçŽãããŸããã€ãŸããåå ã®æäœã¯ãã¹ãŠãããã»ããµãã£ãã·ã¥ãå šå®¹éã§äœ¿çšããŸãã ããã«å ããŠãKXã¯ãã¯ãã«ããã»ããµåœä»€ãä»ããç®è¡æŒç®ãªã©ã®ãã¹ãŠã®åºæ¬æäœãå®è£ ããŠãé床ãæ倧åããããšããŸããã Qã¯ãããŒã¿ããŒã¹ã®ç¹æ§ã§ã¯ãªãã¿ã¹ã¯ãå®è¡ã§ããŸã-ããšãã°ãã¹ããªãŒãã³ã°ããŒã¿ãåŠçããããªã¢ã«ã¿ã€ã ãã§èšç®ããŸãïŒã¿ã¹ã¯ã«å¿ããŠæ°åããªç§ããæ°ç§ã®é 延ã§ïŒããŸããŸãªæéééã®éèååã®ããŸããŸãªéèšé¢æ°ãŸãã¯å®å šãªåœ±é¿ã®ã¢ãã«ã®æ§ç¯åžå Žãžã®ååŒãšãã®å®äºçŽåŸã®ãããã¡ã€ãªã³ã°ãå®è¡ããŸãã ãã®ãããªã¿ã¹ã¯ã§ã¯ãã»ãšãã©ã®å Žåãäž»ãªæéé 延ã¯Qã§ã¯ãªããç°ãªããœãŒã¹ããã®ããŒã¿ãåæããå¿ èŠããããŸãã ããŒã¿ãšããããåŠçããé¢æ°ãåãããã»ã¹ã«ãããšããäºå®ã«ããé«éãéæãããåŠçã¯ã解éãããªãããã€ããªã³ãŒãã§å®è¡ãããè€æ°ã®QSQLåŒãšçµåã®å®è¡ã«éå®ãããŸãã
æåŸã«ããµãŒãã¹ããã»ã¹ãQã§èšè¿°ã§ããŸãã ããšãã°ããŠãŒã¶ãŒèŠæ±ãå¿ èŠãªããŒã¿ããŒã¹ãšãµãŒããŒã«èªåçã«é ä¿¡ããã²ãŒããŠã§ã€ããã»ã¹ã ããã°ã©ããŒã¯ããã©ã³ã¹ãåªå é äœä»ãããã©ãŒã«ããã¬ã©ã³ã¹ãã¢ã¯ã»ã¹æš©ãã¯ã©ãŒã¿ãããã³äžè¬çã«ããªãã®å¿ãæãããããã¢ã«ãŽãªãºã ãå®è£ ããå®å šãªèªç±ãæã£ãŠããŸãã ããã§ã®äž»ãªåé¡ã¯ãããããã¹ãŠãèªåã§å®è£ ããå¿ èŠãããããšã§ãã
äŸãšããŠãç§ãã¡ãæã£ãŠããããã»ã¹ã®ã¿ã€ãããªã¹ãããŸãã ãããã¯ãã¹ãŠç©æ¥µçã«äœ¿çšãããé£æºããŠåäœããå€æ°ã®ç°ãªãããŒã¿ããŒã¹ãçµã¿åãããŠãå€ãã®ãœãŒã¹ããã®ããŒã¿ãåŠçããæ°çŸã®ãŠãŒã¶ãŒãšã¢ããªã±ãŒã·ã§ã³ã«ãµãŒãã¹ãæäŸããŸãã
- ããŒã¿ãœãŒã¹ãžã®ã³ãã¯ã¿ïŒãã£ãŒããã³ãã©ãŒïŒã ãããã®ããã»ã¹ã¯éåžžãQã«ããŒããããå€éšã©ã€ãã©ãªã䜿çšããŸããQã®Cã€ã³ã¿ãŒãã§ã€ã¹ã¯éåžžã«ã·ã³ãã«ã§ãä»»æã®C / C ++ã©ã€ãã©ãªã®ãããã·é¢æ°ãç°¡åã«äœæã§ããŸãã Qã¯ãããšãã°ããšãŒãããã®ãã¹ãŠã®èšŒåžååŒæããã®FIXã¡ãã»ãŒãžã®ãããŒãåæã«åŠçããã®ã«ååãªé床ã§ãã
- TickerplantããŒã¿ãã£ã¹ããªãã¥ãŒã¿ ãã³ãã¯ã¿ãšã³ã³ã·ã¥ãŒãã®éã®äžéãªã³ã¯ãšããŠæ©èœããŸãã åæã«ãåä¿¡ããŒã¿ãç¹å¥ãªãã€ããªãã°ã«æžã蟌ã¿ãæ¥ç¶ã®åæãåèµ·åã«å¯Ÿããæ¶è²»è
ã®æµæãæäŸããŸãã
- ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ïŒrdbïŒã ãããã®ããŒã¿ããŒã¹ã¯ãçã®æ°é®®ãªããŒã¿ãžã®æéã®ã¢ã¯ã»ã¹ãæäŸããã¡ã¢ãªã«ä¿åããŸãã ååãšããŠãæ¥äžã¯ããŒãã«ã«ããŒã¿ãèç©ããå€éã¯ãŒãã«ããŸãã
- æ°žç¶ããŒã¿ããŒã¹ïŒpdbïŒã ãããã®ããŒã¿ããŒã¹ã¯ãä»æ¥ãå±¥æŽããŒã¿ããŒã¹ã«ããŒã¿ã¹ãã¬ãŒãžãæäŸããŸãã ååãšããŠãrdbãšã¯ç°ãªããã¡ã¢ãªã«ã¯ããŒã¿ãä¿åããŸãããã1æ¥éãã£ã¹ã¯äžã®ç¹å¥ãªãã£ãã·ã¥ã䜿çšããçå€äžã®ããŒã¿ãå±¥æŽããŒã¿ããŒã¹ã«ã³ããŒããŸãã
- å±¥æŽããŒã¹ïŒhdbïŒã ãããã®ããŒã¿ããŒã¹ã¯ãéå»ã®æ¥ãæã幎ã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã ãµã€ãºïŒæ¥æ°ïŒã¯ãããŒããã©ã€ãã®ãµã€ãºã«ãã£ãŠã®ã¿å¶éãããŸãã ããŒã¿ã¯ã©ãã«ã§ããç¹ã«ã¢ã¯ã»ã¹ãé«éåããããã«ç°ãªããã£ã¹ã¯ã«é
眮ã§ããŸãã éžæããããã€ãã®ã¢ã«ãŽãªãºã ã䜿çšããŠããŒã¿ãå§çž®ããããšãã§ããŸãã ããŒã¿ããŒã¹æ§é ã¯ååã«ææžåãããŠãããã·ã³ãã«ã§ããããŒã¿ã¯ãŠãããããšã«éåžžã®ãã¡ã€ã«ã«ä¿åãããããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®äœ¿çšãå«ããŠåŠçã§ããŸãã
- éçŽãããæ
å ±ãæã€ããŒã¿ããŒã¹ã ããŸããŸãªéèšããéåžžã¯æ©åšåãšæéééã§ã°ã«ãŒãåãããŠä¿åãããŸãã ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã¯ãçä¿¡ã¡ãã»ãŒãžããšã«ã¹ããŒã¿ã¹ãæŽæ°ããå±¥æŽããŒã¿ããŒã¹ã¯äºåã«èšç®ãããããŒã¿ãä¿åããŠãå±¥æŽããŒã¿ãžã®ã¢ã¯ã»ã¹ãé«éåããŸãã
- æåŸã«ã ã²ãŒããŠã§ã€ã¯ã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããŸãã Qã䜿çšãããšãçä¿¡ã¡ãã»ãŒãžã®å®å
šãªéåæåŠçãããŒã¿ããŒã¹éã®é
ä¿¡ãã¢ã¯ã»ã¹æš©ã®ç¢ºèªãªã©ãå®è£
ã§ããŸãã ä»ã®ããŒã¿ããŒã¹ã®å Žåã®ããã«ãã¡ãã»ãŒãžã¯SQLã¹ããŒãã¡ã³ãã«éå®ããããã»ãšãã©ã®å ŽåSQLã¹ããŒãã¡ã³ãã§ã¯ãªãããšã«æ³šæããŠãã ããã ã»ãšãã©ã®å ŽåãSQLåŒã¯ç¹å¥ãªé¢æ°ã«é ããããŠãŒã¶ãŒãèŠæ±ãããã©ã¡ãŒã¿ãŒã«åºã¥ããŠæ§ç¯ãããŸã-æéã®å€æããã£ã«ã¿ãŒåŠçãããŒã¿ã®æ£èŠåïŒããšãã°ãé
åœãæ¯æãããå Žåãæ ªåŒã®äŸ¡æ Œã¯å¹³æºåãããŸãïŒãªã©
1ã€ã®ããŒã¿åã®å žåçãªã¢ãŒããã¯ãã£ïŒ
ã¹ããŒã
Qã¯ã€ã³ã¿ãŒããªã¿ãŒèšèªã§ãããåæã«ãã¯ã¿ãŒèšèªã§ããããŸãã ããã¯ãå€ãã®çµã¿èŸŒã¿é¢æ°ãç¹ã«ç®è¡é¢æ°ãä»»æã®åœ¢åŒã®åŒæ°ãåãããšãæå³ããŸã-æ°å€ããã¯ãã«ãè¡åããªã¹ããããã³ããã°ã©ããŒã¯é åã®æŒç®ãšããŠããã°ã©ã ãå®è£ ããããšãæåŸ ãããŸãã ãã®ãããªèšèªã§ã¯ã100äžåã®èŠçŽ ã«2ã€ã®ãã¯ãã«ãè¿œå ããå Žåãèšèªã解éãããããšã¯åé¡ã§ã¯ãªããè¿œå ã¯è¶ æé©åããããã€ããªé¢æ°ã«ãã£ãŠå®è¡ãããŸãã Qããã°ã©ã ã®å€§åã®æéã¯ããããã®åºæ¬çãªãã¯ãã«åãããé¢æ°ã䜿çšããããŒãã«ã®æäœã«è²»ããããããã1ã€ã®ããã»ã¹ã§ã倧éã®ããŒã¿ãåŠçã§ããéåžžã«åªããåºåé床ãåããŠããŸãã ããã¯pythonã®æ°åŠã©ã€ãã©ãªã«äŒŒãŠããŸã-pythonèªäœã¯éåžžã«é ãèšèªã§ãããã³ã³ãã€ã«ãããèšèªã®é床ã§æ°å€ããŒã¿ãåŠçã§ããå€ãã®åªããnumpyã©ã€ãã©ãªããããŸãïŒãšããã§ãnumpyã¯ã€ããªãã®ãŒçã«Qã«è¿ãïŒã
ããã«ãKXã¯ããŒãã«ã®èšèšã«éåžžã«æ éã«åãçµã¿ãããŒãã«ãšã®äœæ¥ãæé©åããŸããã ãŸããããã€ãã®ã¿ã€ãã®ã€ã³ããã¯ã¹ããµããŒããããŠããŸãããããã¯çµã¿èŸŒã¿é¢æ°ã§ãµããŒããããŠãããããŒãã«åã ãã§ãªããã°ã«ãŒãåã䞊ã¹æ¿ããäžææ§å±æ§ãå±¥æŽããŒã¿ããŒã¹ã®ç¹å¥ãªã°ã«ãŒãåã«ãé©çšã§ããŸãã ã€ã³ããã¯ã¹ã¯èŠçŽ çã«éãåããããå/ãã¯ãã«ã«èŠçŽ ãè¿œå ãããšãã«èªåçã«èª¿æŽãããŸãã ã€ã³ããã¯ã¹ã¯ãã¡ã¢ãªãšãã£ã¹ã¯ã®äž¡æ¹ã§åãããã«ããŒãã«ã®åã«éãªãããšãã§ããŸãã QSQLã¯ãšãªãå®è¡ãããšãå¯èœã§ããã°ã€ã³ããã¯ã¹ãèªåçã«äœ¿çšãããŸãã 次ã«ãOSã®ãã¡ã€ã«ãããã³ã°ã¡ã«ããºã ïŒã¡ã¢ãªãããïŒãä»ããŠå±¥æŽããŒã¿ã®åŠçãè¡ãããŸãã 倧ããªããŒãã«ãã¡ã¢ãªã«ããŒããããããšã¯ãããŸããã代ããã«ãå¿ èŠãªåãã¡ã¢ãªã«çŽæ¥ãããããããã®äžéšã®ã¿ãå®éã«ããŒããããŸãïŒããã§ãã€ã³ããã¯ã¹ã圹ç«ã¡ãŸãïŒã ããŒã¿ãã¡ã¢ãªå ã«ãããã©ããã«ããããããããã°ã©ãã«ãšã£ãŠéãã¯ãããŸãããmmapãæäœããã¡ã«ããºã ã¯Qã®è žå ã«å®å šã«é ãããŠããŸãã
KDB +ã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯ãããŸãããããŒãã«ã«ã¯ä»»æã®ããŒã¿ãå«ããããšãã§ããŸãããããŒãã«å ã®è¡ã®é åºã¯æ°ããèŠçŽ ãè¿œå ãããŠãå€åãããã¯ãšãªãèšè¿°ãããšãã«äœ¿çšã§ããŸãã ãã®æ©èœã¯ãæç³»åïŒäº€æããã¬ã¡ããªãã€ãã³ããã°ããã®ããŒã¿ïŒãæäœããããã«ç·æ¥ã«å¿ èŠã§ããããã¯ãããŒã¿ãæéã§ãœãŒããããŠããå ŽåããŠãŒã¶ãŒãããŒãã«å ã®æåãŸãã¯æåŸã®è¡ãŸãã¯Nè¡ãèŠã€ããããã«SQLããªãã¯ã䜿çšããå¿ èŠããªãããã§ããNè¡ç®ä»¥éã®è¡ã決å®ããŸãã ããŒãã«ã®çµåã¯ããã«ç°¡åã«ãªããŸããããšãã°ã16,000件ã®ãã©ã³ã¶ã¯ã·ã§ã³VOD.LïŒVodafonïŒã®5åèŠçŽ ã®ããŒãã«ã®æåŸã®åŒçšç¬ŠãèŠã€ããã«ã¯ããã£ã¹ã¯ã§çŽ1ç§ãã¡ã¢ãªã§æ°åããªç§ããããŸãã
æéçµåã®äŸã¯ãåŒçšããŒãã«ãã¡ã¢ãªã«ãããããããããVOD.Lãæå®ããå¿ èŠã¯ãããŸãããsymåã®ã€ã³ããã¯ã¹ãæé»çã«äœ¿çšãããããŒã¿ãæéã§ãœãŒãããããšããäºå®ã§ãã Qã®ã»ãšãã©ãã¹ãŠã®çµåã¯éåžžã®é¢æ°ã§ãããselectã¹ããŒãã¡ã³ãã®äžéšã§ã¯ãããŸããã
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ã®ãŠãŒã¹ã±ãŒã¹ããããŸãïŒã æãéèŠãªããšã¯ãããã°ã©ã ãæžãããã«æ ¹æ¬çã«ç°ãªãã¢ãããŒããå¿ èŠã§ãã ãã¯ãã«èšèªã§ã¯ãé åå€æã®èŠ³ç¹ããåžžã«èããmap / reduceé¢æ°ïŒQã§ã¯å¯è©ãšåŒã°ããïŒã®ããã€ãã®ãªãã·ã§ã³ãéããŠãã¹ãŠã®ãµã€ã¯ã«ãå®è£ ãããã¯ãã«æŒç®ãã¢ãããã¯ãªãã®ã«çœ®ãæããŠã³ã¹ããç¯çŽããããšããªãã§ãã ããã ããšãã°ãé åå ã®èŠçŽ ã®Nçªç®ã®åºçŸã®ã€ã³ããã¯ã¹ãèŠã€ããã«ã¯ã次ã®ããã«èšè¿°ããå¿ èŠããããŸãã
1. (where element=vector)[N]
ãã ããããã¯C / Javaæšæºã§ã¯éåžžã«éå¹çã«èŠããŸãïŒ=ããŒã«ãã¯ãã«ãäœæãããã®äžã®çã®èŠçŽ ã®ã€ã³ããã¯ã¹ãè¿ããŸãïŒã ãããããã®ãããªã¬ã³ãŒãã¯åŒã®æå³ãããç解ããããããé ãã¢ãããã¯ãªãã®ã®ä»£ããã«é«éãªãã¯ãã«æŒç®ã䜿çšããŸãã ãã¯ãã«èšèªãšãã®ä»ã®èšèªã®æŠå¿µçãªéãã¯ãããã°ã©ãã³ã°ã«å¯Ÿããåœä»€çã¢ãããŒããšæ©èœçã¢ãããŒãã®éãã«å¹æµãããã®ã§ãããããã«åããå¿ èŠããããŸãã
äžéšã®ãŠãŒã¶ãŒãQSQLã«äžæºãæ±ããŠããŸãã å®éã«ã¯ãå®éã®SQLã®ããã«èŠããã ãã§ãã å®éãã¯ãšãªã®æé©åããµããŒãããªãSQLã®ãããªåŒã®åãªãã€ã³ã¿ãŒããªã¿ãŒã§ãã ãŠãŒã¶ãŒèªèº«ãæé©ãªã¯ãšãªãäœæããå¿ èŠããããŸããQã§ã¯ãå€ãã®æºåãæŽã£ãŠããŸããã äžæ¹ããã¡ããããã©ãã¯ããã¯ã¹ãªããã£ãã€ã¶ãŒã«äŸåããããšãªãããã€ã§ãæé©ãªã¯ãšãªãèªåã§äœæã§ããŸãã
ããã«ãQ-Q For Mortalsã®æ¬ã¯äŒç€Ÿã®Webãµã€ãã§ç¡æã§å ¥æã§ããŸãããŸããä»ã«ãå€ãã®æçšãªè³æãåéãããŠããŸãã
ãã1ã€ã®å€§ããªãã€ãã¹ç¹ã¯ãã©ã€ã»ã³ã¹ã®ã³ã¹ãã§ãã ããã¯ã1ã€ã®CPUã§å¹Žéæ°äžãã«ã§ãã 倧äŒæ¥ã ãããã®ãããªè²»çšãæ¯æãããšãã§ããŸãã æè¿ãKXã¯ã©ã€ã»ã³ã¹ããªã·ãŒãããæè»ã«ããGoogleããã³Amazonã¯ã©ãŠãã§äœ¿çšæéã«ã®ã¿æéãæ¯æãããKDB +ãã¬ã³ã¿ã«ããæ©èœãæäŸããŠããŸãã KXã¯ãéåçšç®çã®ç¡æããŒãžã§ã³ ïŒ32ãããããŒãžã§ã³ãŸãã¯64ããããªã¯ãšã¹ãã«å¿ããŠïŒã®ããŠã³ããŒããæäŸããŠããŸãã
競åä»ç€Ÿ
åæ§ã®ååã«åºã¥ããŠæ§ç¯ãããéåžžã«å€ãã®ç¹æ®ãªããŒã¿ããŒã¹ããããŸããéåžžã«å€§éã®ããŒã¿ã«çŠç¹ãåããããåæ±ç¶ã®ã€ã³ã¡ã¢ãªã§ãã åé¡ã¯ãããããç¹æ®ãªããŒã¿ããŒã¹ã§ããããšã§ãã 代衚çãªäŸãClickhouseã§ãã ãã®ããŒã¿ããŒã¹ã¯ããã£ã¹ã¯ã«ããŒã¿ãä¿åããŠã€ã³ããã¯ã¹ãäœæãããšããKDB +ã®åçãšéåžžã«äŒŒãŠããŸã;ããã»ã©ã§ã¯ãããŸããããKDB +ãããé«éã«ã¯ãšãªãå®è¡ããŸãã ããããClickhouseããŒã¿ããŒã¹ã¯KDB +ãããå°éçã§ã-Webåæãšä»»æã®æç³»åïŒãã®éãã¯éåžžã«éèŠã§ã-ããšãã°ãClickhouseã§ã¬ã³ãŒãã®é åºã䜿çšããæ¹æ³ã¯ãããŸããïŒã ããããæãéèŠãªããšãšããŠãClickhouseã«ã¯KDB +ã®æ®éæ§ããªãããã以åã«å¥ã®ã¢ããªã±ãŒã·ã§ã³ã«ããŒã¿ãèªã¿èŸŒãã ããä»»æã®SQLåŒãäœæããããã¯ãšãªã§ä»»æã®é¢æ°ã䜿çšããããå±¥æŽããŒã¹ã®é¢æ°ã®å®è¡ã«é¢ä¿ã®ãªãããã»ã¹ãäœæãããããã®ã§ã¯ãªããããŒã¿ããŒã¹ã§çŽæ¥ããŒã¿ãåŠçã§ããŸãã ãããã£ãŠãKDB +ãä»ã®ããŒã¿ããŒã¹ãšæ¯èŒããããšã¯å°é£ã§ããå¥ã ã®ãŠãŒã¹ã±ãŒã¹ã§åªããŠããå ŽåããåŸæ¥ã®ããŒã¿ããŒã¹ã®ã¿ã¹ã¯ã«é¢ããŠã¯åªããŠããå ŽåããããŸãããäžæããŒã¿ãåŠçããããã®åæ§ã«å¹æçã§æ®éçãªããŒã«ã¯ç¥ããŸããã
Pythonçµ±å
KXã¯ããã¯ãããžãŒã«æ £ããŠããªã人ãKDB +ã䜿ããããããããã«ãåäžããã»ã¹ã§Pythonãšç·å¯ã«çµ±åããããã®ã©ã€ãã©ãªãäœæããŸããã Qããpythoné¢æ°ãåŒã³åºãããšãããã®éãå¯èœã§ãïŒPythonããQé¢æ°ãåŒã³åºãïŒç¹ã«QSQLåŒïŒïŒã ã©ã€ãã©ãªã¯ãå¿ èŠã«å¿ããŠïŒåžžã«å¹çãäžããããã«ïŒããŒã¿ãããèšèªã®åœ¢åŒããå¥ã®èšèªã®åœ¢åŒã«å€æããŸãã ãã®çµæãQãšPythonã¯å¯æ¥ãªå ±çé¢ä¿ã«ããããããã®å¢çã¯æ¶å»ãããŸãã ãã®çµæãããã°ã©ããŒã¯ãäžæ¹ã§å€æ°ã®äŸ¿å©ãªPythonã©ã€ãã©ãªãŒã«å®å šã«ã¢ã¯ã»ã¹ã§ããŸããäžæ¹ã§ã圌ã¯Pythonã«çµ±åãããããã°ããŒã¿ãæäœããããã®é«éãªåºç€ãæã«å ¥ããŸããããã¯ãæ©æ¢°åŠç¿ãã¢ããªã³ã°ã«é¢ãã人ã«ãšã£ãŠç¹ã«äŸ¿å©ã§ãã
Pythonã§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/