Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… KDB+: ΠΎΡ‚ финансов Π΄ΠΎ Β«Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ 1Β»

KDB+, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ KX β€” это ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстная Π² ΡƒΠ·ΠΊΠΈΡ… ΠΊΡ€ΡƒΠ³Π°Ρ…, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрая, колоночная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, прСдназначСнная для хранСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов ΠΈ аналитичСских вычислСний Π½Π° ΠΈΡ… основС. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° пользовалась (ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ) большой ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ Π² индустрии финансов β€” Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всС Ρ‚ΠΎΠΏ-10 инвСстиционных Π±Π°Π½ΠΊΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ извСстныС Ρ…Π΅Π΄ΠΆ-Ρ„ΠΎΠ½Π΄Ρ‹, Π±ΠΈΡ€ΠΆΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ послСднСС врСмя Π² KX Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… областях, Π³Π΄Π΅ имССтся большоС количСство Π΄Π°Π½Π½Ρ‹Ρ…, упорядочСнных ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ β€” Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌ, Π±ΠΈΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°, производство ΠΈ Ρ‚.Π΄. Π’ Ρ‚ΠΎΠΌ числС ΠΎΠ½ΠΈ стали ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Aston Martin Red Bull Racing Π² Β«Π€ΠΎΡ€ΠΌΡƒΠ»Π΅ 1Β», Π³Π΄Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π±ΠΎΠ»ΠΈΠ΄ΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСсты Π² аэродинамичСской Ρ‚Ρ€ΡƒΠ±Π΅. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ особСнности KDB+ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π΅ ΡΠ²Π΅Ρ€Ρ…ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π΅ большиС дСньги, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ….
Β 
Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… KDB+: ΠΎΡ‚ финансов Π΄ΠΎ «Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ 1»
Β 
Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя KDB+, ΠΊΠ°ΠΊΠΈΠ΅ возмоТности ΠΈ ограничСния ΠΈΠΌΠ΅Π΅Ρ‚, Π² Ρ‡Π΅ΠΌ Π΅Π΅ польза для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΒ  большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ KDB+ ΠΈ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ Π΅Π΅ языка программирования Q. ОбС эти Ρ‚Π΅ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ ΠΈ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… статСй. Много  ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ этим Ρ‚Π΅ΠΌΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° сайтС code.kx.com, Π² Ρ‚ΠΎΠΌ числС ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎ Q β€” Q For Mortals (см. ссылку Π½ΠΈΠΆΠ΅).

НСкоторыС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹

  • In-memory Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти для ускорСния доступа. Достоинства Ρ‚Π°ΠΊΠΎΠΉ Π±Π°Π·Ρ‹ понятны, Π° нСдостатки β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ памяти Π½Π° сСрвСрС.
  • ΠšΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ хранятся ΠΏΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎ, Π° Π½Π΅ запись Π·Π° записью. ОсновноС достоинство Ρ‚Π°ΠΊΠΎΠΉ Π±Π°Π·Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ хранятся вмСстС Π½Π° дискС ΠΈ Π² памяти, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт доступ ΠΊ Π½ΠΈΠΌ. НСт нСобходимости Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² запросС. Основной нСдостаток β€” слоТно ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ записи.
  • Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд. Π”Π°Π½Π½Ρ‹Π΅ с ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° Π΄Π°Ρ‚Π° ΠΈΠ»ΠΈ врСмя. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, для Ρ‚Π°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π²Π°ΠΆΠ½Π° ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая запись ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ слСдуСт Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΎΡ‚ порядка записСй. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… построСны Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ β€” прСдставлСнии совокупности записСй ΠΊΠ°ΠΊ мноТСства, Π³Π΄Π΅ порядок записСй Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.
  • Π’Π΅ΠΊΡ‚ΠΎΡ€. Π’ контСкстС 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 с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° SQL Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² стилС LINQ ΠΈΠ· C#. Π­Ρ‚ΠΎ ваТнСйшСС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ KDB+ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ Π΅Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠ΅ прСимущСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΠ· Π²ΠΈΠ΄Π°. Π­Ρ‚ΠΎ Π½Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… + Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык-ΠΈΠ½Π²Π°Π»ΠΈΠ΄, Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования + встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ пСрСчислСнии всСх прСимущСств KDB+. НапримСр…
Β 

Π Π°Π·ΠΌΠ΅Ρ€

По соврСмСнным ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ KDB+ ΠΈΠΌΠ΅Π΅Ρ‚ просто микроскопичСский Ρ€Π°Π·ΠΌΠ΅Ρ€. Π­Ρ‚ΠΎ Π² Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠΌ смыслС ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ мСньшС ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° ΠΈ ΠΎΠ΄ΠΈΠ½ нСбольшой тСкстовый Ρ„Π°ΠΉΠ» с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ систСмными функциями. РСально β€” мСньшС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° ΠΈ Π·Π° эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ платят дСсятки тысяч Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² Π³ΠΎΠ΄ Π·Π° ΠΎΠ΄ΠΈΠ½ процСссор Π½Π° сСрвСрС.

  • Π’Π°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ позволяСт KDB+ прСкрасно сСбя Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° любом ΠΆΠ΅Π»Π΅Π·Π΅ β€” ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Pi Π΄ΠΎ сСрвСров с Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π°ΠΌΠΈ памяти. На Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ влияСт, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ стартуСт Q ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ позволяСт Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ числС ΠΊΠ°ΠΊ скриптовой язык.
  • ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Q ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ помСщаСтся Π² кСш процСссора, Ρ‡Ρ‚ΠΎ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
  • ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ исполняСмого Ρ„Π°ΠΉΠ»Π° процСсс Q Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½ΠΎ ΠΌΠ°Π»ΠΎ мСста Π² памяти, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… сотнями. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈ нСобходимости Q ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ дСсятками-сотнями Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ памяти Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Q прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для самых Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Q ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ историчСской Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ быстрый доступ ΠΊ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π£ нас, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅ΡΡ‚ΡŒ дСсятки историчСских Π±Π°Π·, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½ нСсТатый дСнь Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС 100 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ограничСниях запрос ΠΊ Π±Π°Π·Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π·Π° дСсятки-сотни миллисСкунд. Π’ Ρ†Π΅Π»ΠΎΠΌ Π½Π° запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρƒ нас Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ β€” 30 сСкунд β€” ΠΈ ΠΎΠ½ срабатываСт ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ.
Β 
Π‘ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Q ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ in-memory Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π² памяти происходит Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ быстро, Ρ‡Ρ‚ΠΎ Π»ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π”Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… хранятся ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ любая опСрация ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ кСш процСссора Π½Π° ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ. Π’ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ этому Π² KX ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° арифмСтичСских Ρ‡Π΅Ρ€Π΅Π· Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ инструкции процСссора, максимизируя ΠΈΡ… ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Q ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ свойствСнныС Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π² Β«Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ» (с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΎΡ‚ дСсятков миллисСкунд Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд Π² зависимости Π·Π°Π΄Π°Ρ‡ΠΈ) Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для финансовых инструмСнтов для Ρ€Π°Π·Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² ΠΈΠ»ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ модСль влияния ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΉ сдСлки Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ практичСски сразу послС Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π’ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ… Ρ‡Π°Ρ‰Π΅ всСго ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ вносит Π½Π΅ Q, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников. Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ достигаСтся благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, находятся Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС, Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сводится ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… QSQL Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΠΆΠΎΠΉΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Β 
НаконСц, Π½Π° Q ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ сСрвисныС процСссы. НапримСр, Gateway процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ ΠΈ сСрвСрам. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ свободу Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для балансирования, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, отказоустойчивости, ΠΏΡ€Π°Π² доступа, ΠΊΠ²ΠΎΡ‚ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‡Π΅Π³ΠΎ Π΄ΡƒΡˆΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΡƒΡ‚, Ρ‡Ρ‚ΠΎ придСтся всС это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ самому.
Β 
Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ процСссов Π΅ΡΡ‚ΡŒ Ρƒ нас. ВсС ΠΎΠ½ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ совмСстно, объСдиняя Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ дСсятки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π·, обрабатывая Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мноТСства источников ΠΈ обслуТивая сотни ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

  • ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ (feedhandler) ΠΊ источникам Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΈ процСссы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ грузятся Π² Q. Π‘-интСрфСйс Π² Q ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост ΠΈ позволяСт Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ прокси Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для любой Π‘/C++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Q достаточно быстр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠ° FIX сообщСний со всСх СвропСйских стоковых Π±ΠΈΡ€ΠΆ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
  • РаспрСдСлитСли Π΄Π°Π½Π½Ρ‹Ρ… (tickerplant), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТат ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ потрСбитСлями. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΎΠ½ΠΈ ΠΏΠΈΡˆΡƒΡ‚ входящиС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Π»ΠΎΠ³, обСспСчивая ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ для ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΊ потСрям соСдинСния ΠΈΠ»ΠΈ пСрСзапускам.
  • In-memory Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (rdb). Π­Ρ‚ΠΈ Π±Π°Π·Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ максимально быстрый доступ ΠΊ сырым свСТим Π΄Π°Π½Π½Ρ‹ΠΌ, храня ΠΈΡ… Π² памяти. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня ΠΈ ΠΎΠ±Π½ΡƒΠ»ΡΡŽΡ‚ ΠΈΡ… Π½ΠΎΡ‡ΡŒΡŽ.
  • Persist Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (pdb). Π­Ρ‚ΠΈ Π±Π°Π·Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ сохранСниС Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° сСгодняшний дСнь Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ rdb, ΠΎΠ½ΠΈ Π½Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ кСш Π½Π° дискС Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ дня ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΠ»Π½ΠΎΡ‡ΡŒ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ.
  • Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π±Π°Π·Ρ‹ (hdb). Π­Ρ‚ΠΈ Π±Π°Π·Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π΄Π½ΠΈ, мСсяцы ΠΈ Π³ΠΎΠ΄Ρ‹. Π Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ… (Π² днях) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ТСстких дисков. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π² частности Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… дисках для ускорСния доступа. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ нСсколько Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π° Π²Ρ‹Π±ΠΎΡ€. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ проста, Π΄Π°Π½Π½Ρ‹Π΅ хранятся ΠΏΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ числС срСдствами ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.
  • Π‘Π°Π·Ρ‹ с Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π₯ранят Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ с, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ названию инструмСнта ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. In-memory Π±Π°Π·Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ своС состояниС ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ входящСм сообщСнии, Π° историчСскиС хранят прСдвычислСнныС Π΄Π°Π½Π½Ρ‹Π΅ для ускорСния доступа ΠΊ историчСским Π΄Π°Π½Π½Ρ‹ΠΌ.
  • НаконСц, gateway процСссы, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ прилоТСния ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Q позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ входящих сообщСний, распрСдСлСниС ΠΈΡ… ΠΏΠΎ Π±Π°Π·Π°ΠΌ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π² доступа ΠΈ Ρ‚.ΠΏ. Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ сообщСния Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ‡Π°Ρ‰Π΅ всСго Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ SQL выраТСниями, ΠΊΠ°ΠΊ это Π±Ρ‹Π²Π°Π΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π§Π°Ρ‰Π΅ всСго SQL Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ скрыто Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ конструируСтся исходя ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ β€” проводится конвСртация Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ, Π΄Π°Π½Π½Ρ‹Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π΅Π½Π° Π°ΠΊΡ†ΠΈΠΉ выравниваСтся, Ссли Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠ»Π°Ρ‚Π° Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Π΄ΠΎΠ²) ΠΈ Ρ‚.ΠΏ.

Випичная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…:

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… KDB+: ΠΎΡ‚ финансов Π΄ΠΎ «Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ 1»

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

Π₯отя Q являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, это ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ язык. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² частности, арифмСтичСскиС, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ любой Ρ„ΠΎΡ€ΠΌΡ‹ β€” числа, Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, списки, Π° ΠΎΡ‚ программиста оТидаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ массивами. Π’ Ρ‚Π°ΠΊΠΎΠΌ языкС, Ссли Π²Ρ‹ складываСтС Π΄Π²Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρƒ элСмСнтов, ΡƒΠΆΠ΅ Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈ, Ρ‡Ρ‚ΠΎ язык ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ, слоТСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ супСроптимизированной Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ львиная доля Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° Q ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ эти Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π΅ΠΌ вСсьма ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ объСм Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°ΠΆΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ β€” хотя сам ΠΏΠΈΡ‚ΠΎΠ½ язык вСсьма нСбыстрый, Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ прСкрасных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚ΠΈΠΏΠ° numpy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ числовыС Π΄Π°Π½Π½Ρ‹Π΅ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка (кстати, numpy идСологичСски Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ Q).
Β 
Помимо этого Π² KX вСсьма Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ подошли ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, поддСрТиваСтся нСсколько Π²ΠΈΠ΄ΠΎΠ² индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ встроСнными функциями ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†, Π½ΠΎ ΠΈ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌ β€” Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, сортировка, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° для историчСских Π±Π°Π·. ИндСкс накладываСтся элСмСнтарно ΠΈ автоматичСски коррСктируСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнтов Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ/Π²Π΅ΠΊΡ‚ΠΎΡ€. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ† ΠΊΠ°ΠΊ Π² памяти, Ρ‚Π°ΠΊ ΠΈ Π½Π° дискС. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ QSQL запроса индСксы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ автоматичСски, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π° с историчСскими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ сдСлана Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ отобраТСния Ρ„Π°ΠΉΠ»ΠΎΠ² ОБ (memory map). Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ грузятся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, вмСсто этого Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ грузится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π° ΠΈΡ… Ρ‡Π°ΡΡ‚ΡŒ (Ρ‚ΡƒΡ‚ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² Ρ‚ΠΎΠΌ числС индСксы), которая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°. Для программиста Π½Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, находятся Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с mmap ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скрыт Π² Π½Π΅Π΄Ρ€Π°Ρ… Q.
Β 
KDB+ Π½Π΅ рСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈ этом порядок строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅ мСняСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ написании запросов. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ остро Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ рядами (Π΄Π°Π½Π½Ρ‹Π΅ с Π±ΠΈΡ€ΠΆ, тСлСмСтрия, Π»ΠΎΠ³ΠΈ событий), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли Π΄Π°Π½Π½Ρ‹Π΅ отсортированы ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… SQL Ρ‚Ρ€ΡŽΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ»ΠΈ послСднюю ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ строку ΠΈΠ»ΠΈ N строк, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ какая строка слСдуСт Π·Π° N-ΠΉ строкой ΠΈ Ρ‚.ΠΏ. Π•Ρ‰Π΅ большС ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ΡΡ Π΄ΠΆΠΎΠΉΠ½Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΠΉΡ‚ΠΈ для 16000 сдСлок VOD.L (Π’ΠΎΠ΄Π°Ρ„ΠΎΠ½) послСднюю ΠΊΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠ· 500 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² элСмСнтов Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ сСкунды Π½Π° дискС ΠΈ дСсяток миллисСкунд Π² памяти.
Β 
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΆΠΎΠΉΠ½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” quote Ρ‚Π°Π±Π»ΠΈΡ†Π° отобраТаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, поэтому Π½Π΅Ρ‚ нСобходимости ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ VOD.L Π² where, нСявно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ индСкс Π½Π° 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+ популярна Ρƒ бизнСса Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ благодаря своСй ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΎΠ½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ слуТит ΠΈ ΠΊΠ°ΠΊ in-memory Π±Π°Π·Π°, ΠΈ ΠΊΠ°ΠΊ Π±Π°Π·Π° для хранСния Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚ историчСских Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… происходит нСпосрСдствСнно Π² Π±Π°Π·Π΅, достигаСтся высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ экономия рСсурсов. ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ язык программирования, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с функциями Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ вСсь стСк Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… процСссов β€” ΠΎΡ‚ получСния Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
Β 

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния

НСдостатки

БущСствСнным нСдостатком KDB+/Q являСтся высокий ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния. Π―Π·Ρ‹ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ странный синтаксис, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сильно ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ (value, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ΅Π΅Ρ‚ порядка 11 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования). Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ написанию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ языкС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ всС врСмя ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ массивов, всС Ρ†ΠΈΠΊΠ»Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ map/reduce (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ adverbs Π² Q), Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ, замСняя Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹ΠΌΠΈ. НапримСр, для нахоТдСния индСкса N-Π³ΠΎ вхоТдСния элСмСнта Π² массив слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ:

1. (whereΒ element=vector)[N]Β Β 

хотя это выглядит ΠΆΡƒΡ‚ΠΊΠΎ нСэффСктивно ΠΏΠΎ ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ C/Java (= создаСт Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, where Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСксы true элСмСнтов Π² Π½Π΅ΠΌ). Но такая запись Π΄Π΅Π»Π°Π΅Ρ‚ смысл выраТСния Π±ΠΎΠ»Π΅Π΅ понятным ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ быстрыС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вмСсто ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ…. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌ языком ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ сравнима с Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΈ ΠΊ этому Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ.
Β 
НСкоторыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ QSQL. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° настоящий SQL. На Π΄Π΅Π»Π΅ ΠΆΠ΅ это просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ SQL-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ запросов. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ сам ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ запросы, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π° Q, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, всСгда ΠΌΠΎΠΆΠ½ΠΎ самому Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ запрос, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€.
Β 
Как плюс ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎ Q β€” Q For Mortals доступна бСсплатно Π½Π° сайтС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΌ собрано ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ².
Β 
Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ большой минус β€” ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ. Π­Ρ‚ΠΎ дСсятки тысяч Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² Π³ΠΎΠ΄ Π·Π° ΠΎΠ΄ΠΈΠ½ CPU. Волько большиС Ρ„ΠΈΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Ρ€Π°Ρ‚Ρ‹. Π’ послСднСС врСмя KX сдСлала Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° врСмя использования ΠΈΠ»ΠΈ Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ KDB+ Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ… Π“ΡƒΠ³Π» ΠΈ Амазон. Π’Π°ΠΊΠΆΠ΅ KX ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ для скачивания Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для нСкомСрчСских Ρ†Π΅Π»Π΅ΠΉ (32 битная вСрсия ΠΈΠ»ΠΈ 64-битная ΠΏΠΎ запросу).
Β 

ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹

БущСствуСт довольно ΠΌΠ½ΠΎΠ³ΠΎ спСциализированных Π±Π°Π·, построСнных Π½Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… β€” ΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½Ρ‹Π΅, in-memory, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ спСциализированныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π―Ρ€ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Clickhouse. Π£ этой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° KDB+ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС ΠΈ строСния индСкса, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ запросы ΠΎΠ½Π° выполняСт быстрСС KDB+, хотя ΠΈ Π½Π΅ сущСствСнно. Но Π΄Π°ΠΆΠ΅ ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Clickhouse являСтся Π±ΠΎΠ»Π΅Π΅ спСциализированной Ρ‡Π΅ΠΌ KDB+ β€” web Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° vs ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды (это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ β€” ΠΈΠ·-Π·Π° Π½Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Clickhouse Π½Π΅Ρ‚ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ записСй). Но, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρƒ Clickhouse Π½Π΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ KDB+, языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно Π² Π±Π°Π·Π΅, Π° Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ SQL выраТСния, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² запросС, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ процСссы Π½Π΅ связанныС с исполнСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ историчСской Π±Π°Π·Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слоТно ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ KDB+ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сцСнариях использования ΠΈΠ»ΠΈ просто Π»ΡƒΡ‡ΡˆΠ΅, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π·Π°Π΄Π°Ρ‡Π°Ρ… классичСских Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠ½Π΅ нСизвСстСн Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ эффСктивный ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
Β 

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Python

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с 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')Β Β 

Бсылки

Π‘Π°ΠΉΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€” https://kx.com/
Π‘Π°ΠΉΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” https://code.kx.com/v2/
Книга Q For Mortals (Π½Π° английском) β€” https://code.kx.com/q4m3/
Π‘Ρ‚Π°Ρ‚ΡŒΠΈ Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ KDB+/Q ΠΎΡ‚ сотрудников kx β€” https://code.kx.com/v2/wp/

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com