KDB+, ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° β ΡΠΎΠ²Π° Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π² ΡΠ΅ΡΠ½ΠΈ ΠΊΡΡΠ³ΠΎΠ²Π΅, ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π±ΡΡΠ·Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΈΡΠΈ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π° ΡΡΡ
Π½Π° Π±Π°Π·Π°. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΡ Π±Π΅ΡΠ΅ (ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅) ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° Π½Π° ΡΠΈΠ½Π°Π½ΡΠΈΡΠ΅ β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠΎΠΏ 10 ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΎΠ½Π½ΠΈ Π±Π°Π½ΠΊΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ Ρ
Π΅Π΄ΠΆ ΡΠΎΠ½Π΄ΠΎΠ²Π΅, Π±ΠΎΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ KX ΡΠ΅ΡΠΈ Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΠΈ Π±Π°Π·Π° ΠΈ ΡΠ΅Π³Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π² Π΄ΡΡΠ³ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ β ΡΠ΅Π»Π΅ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ, Π±ΠΈΠΎΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ Ρ.Π½. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΡΠ°Π½Π°Ρ
Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡ Π½Π° Π΅ΠΊΠΈΠΏΠ° Aston Martin Red Bull Racing Π²ΡΠ² Π€ΠΎΡΠΌΡΠ»Π° 1, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ΅Π½Π·ΠΎΡΠΈΡΠ΅ Π½Π° Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈΡΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π² Π°Π΅ΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡ ΡΡΠ½Π΅Π». Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠ²ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ ΠΏΡΠ°Π²ΡΡ KDB+ ΡΠ²ΡΡΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π°, Π·Π°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΌΠΈ Π² Π½Π΅Ρ, ΠΈ Π½Π°ΠΊΡΠ°Ρ, Π·Π°ΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΌΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
Β

Β
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° ΠΎΠ±ΡΡΠ½Ρ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° 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 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎ-ΠΏΡΠΈΡΡΠ½Π° Π·Π° ΠΎΠΊΠΎΡΠΎ Π²Π΅ΡΡΠΈΡ, Π½Π°ΡΠ΅ΡΠ΅Π½Π° 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 ΠΈΠ·ΡΠ°Π·Π° ΠΈ join-ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Ρ, Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Ρ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΠΊΠΎΠ΄.
Β
ΠΠ°ΠΊΡΠ°Ρ, Π½Π° Q ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ°Ρ ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Gateway ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π½ΡΠΆΠ½ΠΈΡΠ΅ Π±Π°Π·ΠΈ ΠΈ ΡΡΡΠ²ΡΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΡΡ ΠΈΠΌΠ° ΠΏΡΠ»Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠ΅ΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅, ΠΏΡΠΈΠΎΡΠΈΡΠΈΠ·ΠΈΡΠ°Π½Π΅, ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ, ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ, ΠΊΠ²ΠΎΡΠΈ ΠΈ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΡ Π΅ Π½Π° ΡΠΌΠ°. ΠΠ»Π°Π²Π½Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΡΡΠΊ Π΅, ΡΠ΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ.
Β
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·Π±ΡΠΎΡ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈΠΌΠ°ΠΌΠ΅. Π’Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ ΡΠ°Π±ΠΎΡΡΡ Π·Π°Π΅Π΄Π½ΠΎ, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±Π°Π·ΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΉΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°ΠΉΠΊΠΈ ΡΡΠΎΡΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠΎΠ½Π΅ΠΊΡΠΎΡΠΈ (feedhandler) ΠΊΡΠΌ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π’Π΅Π·ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ Π² Q. C-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π² Q Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π»Π΅ΡΠ½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΊΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²ΡΡΠΊΠ° C/C++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Q Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π±ΡΡΠ·, Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠΎΠΊΠ° FIX ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠΈ ΡΠΎΠ½Π΄ΠΎΠ²ΠΈ Π±ΠΎΡΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
- Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ (tickerplant), ΠΊΠΎΠΈΡΠΎ ΡΠ»ΡΠΆΠ°Ρ ΠΊΠ°ΡΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ Π»ΠΎΠ³, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΠΉΠΊΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΏΡΠΈ Π·Π°Π³ΡΠ±Π° Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
- In-memory Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (rdb). Π’Π΅Π·ΠΈ Π±Π°Π·ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ· Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ²Π΅ΠΆΠΈ ΡΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΉΠΊΠΈ Π³ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ Π½Π°ΡΡΡΠΏΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠΈ ΠΏΡΠ΅Π· Π΄Π΅Π½Ρ ΠΈ Π³ΠΈ ΠΎΠ±Π½ΡΠ»ΡΠ²Π°Ρ ΠΏΡΠ΅Π· Π½ΠΎΡΡΠ°.
- Persist Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (pdb). Π’Π΅Π·ΠΈ Π±Π°Π·ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠ΅ΠΊΡΡΠΈΡ Π΄Π΅Π½ Π² ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ° Π±Π°Π·Π°. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ rdb, ΡΠ΅ Π½Π΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΊΠ΅Ρ Π½Π° Π΄ΠΈΡΠΊΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π΅Π½Ρ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΠΏΠΎΠ»ΡΠ½ΠΎΡ Π² ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° Π±Π°Π·Π°.
- ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π°Π·ΠΈ (hdb). Π’Π΅Π·ΠΈ Π±Π°Π·ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π΄Π½ΠΈ, ΠΌΠ΅ΡΠ΅ΡΠΈ ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Π Π°Π·ΠΌΠ΅ΡΡΡ ΠΈΠΌ (Π² Π΄Π½ΠΈ) Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠ° Π½Π° ΡΠ²ΡΡΠ΄ΠΈΡ Π΄ΠΈΡΠΊ. ΠΠ°Π½Π½ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ°. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ. Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΅ Π΄ΠΎΠ±ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΈ ΠΏΡΠΎΡΡΠ°, Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
- ΠΠ°Π·ΠΈ Ρ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π³ΡΡΠΏΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». In-memory Π±Π°Π·ΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠΈ ΠΏΡΠΈ Π²ΡΡΠΊΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Ρ ΡΠ°Π½ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
- ΠΠ°ΠΊΡΠ°Ρ, gateway ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. Q ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ ΠΈΠΌ ΠΏΠΎ Π±Π°Π·ΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈ Π΄Ρ. ΠΠ°Π±Π΅Π»ΡΠ·Π²Π°ΠΌ, ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π½Π΅ ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΈ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ SQL ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π΅ Π² Π΄ΡΡΠ³ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ SQL ΠΈΠ·ΡΠ°Π·ΡΡ Π΅ ΡΠΊΡΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠ° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ β ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π½Π°ΡΠ° Π½Π° Π°ΠΊΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π°, Π°ΠΊΠΎ Π΅ ΠΈΠΌΠ°Π»ΠΎ Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½ΡΠ½ΠΈ ΠΏΠ»Π°ΡΠ°Π½ΠΈΡ) ΠΈ Ρ.Π½.
Π’ΠΈΠΏΠΈΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° Π΅Π΄ΠΈΠ½ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ:

Π‘ΠΊΠΎΡΠΎΡΡ
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Q Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π΅ΠΌ Π΅Π·ΠΈΠΊ, ΡΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π²Π΅ΠΊΡΠΎΡΠ΅Π½ Π΅Π·ΠΈΠΊ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈΡΠ΅, ΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π²ΡΠ² Π²ΡΡΠΊΠ°ΠΊΠ²Π° ΡΠΎΡΠΌΠ° β ΡΠΈΡΠ»Π°, Π²Π΅ΠΊΡΠΎΡΠΈ, ΠΌΠ°ΡΡΠΈΡΠΈ, ΡΠΏΠΈΡΡΡΠΈ, Π° ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΌΠ°ΡΠΈΠ²ΠΈ. Π ΡΠ°ΠΊΡΠ² Π΅Π·ΠΈΠΊ, Π°ΠΊΠΎ ΡΡΠ±Π΅ΡΠ΅ΡΠ΅ Π΄Π²Π° Π²Π΅ΠΊΡΠΎΡΠ° Ρ ΠΌΠΈΠ»ΠΈΠΎΠ½ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°, Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ Π΅Π·ΠΈΠΊΡΡ Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Ρ ΡΡΠΏΠ΅ΡΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° Π±ΠΈΠ½Π°ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° Q ΠΎΡΠΈΠ²Π° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅Π·ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΈΠ»ΠΈΡΠ½Π° ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΎΠ±Π΅ΠΌ Π΄Π°Π½Π½ΠΈ Π΄ΠΎΡΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Python β Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ°ΠΌΠΈΡΡ Python Π΅ Π΄ΠΎΡΡΠ° Π±Π°Π²Π΅Π½ Π΅Π·ΠΈΠΊ, Π² Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΡΠΎ numpy, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ Π΅Π·ΠΈΠΊ (ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, numpy Π΅ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ Q).
Β
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² KX Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ° ΠΏΠΎΠ΄Ρ
ΠΎΠΆΠ΄Π°Π»ΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΡΡ
. ΠΡΡΠ²ΠΎ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΠΈΠ΄Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΡ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ ΠΊΡΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, Π½ΠΎ ΠΈ ΠΊΡΠΌ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈ β Π³ΡΡΠΏΠΈΡΠ°Π½Π΅, ΡΠΎΡΡΠΈΡΠ°Π½Π΅, Π°ΡΡΠΈΠ±ΡΡ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎΡΡ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π·Π° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π°Π·ΠΈ. ΠΠ½Π΄Π΅ΠΊΡΡΡ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ° ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ°/Π²Π΅ΠΊΡΠΎΡΠ°. ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π°Ρ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ°ΠΊΠ° ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° QSQL Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, Π°ΠΊΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ° Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ, ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΠ‘ (memory map). ΠΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°; Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° Π½ΡΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΠ°ΠΌΠΎ ΠΎΠ½Π·ΠΈ ΡΠ΅Ρ
Π΅Π½ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ (ΡΡΠΊ ΠΏΠΎΠΌΠ°Π³Π°Ρ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅), ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ. ΠΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° Π½ΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π½Π΅, ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ mmap Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠΊΡΠΈΡ Π² Π½Π΅Π΄ΡΠ°ΡΠ° Π½Π° Q.
Β
KDB+ Π΅ Π½Π΅ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΡΠΈ ΡΠΎΠ²Π° ΡΠ΅Π΄Π° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. Π’Π°Π·ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡ Π΅ ΠΊΡΠ°ΠΉΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΈΡΠΈ (Π΄Π°Π½Π½ΠΈ ΠΎΡ Π±ΠΎΡΡΠΈ, ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ, Π»ΠΎΠ³ΠΎΠ²Π΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ), Π·Π°ΡΠΎΡΠΎ, Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ° ΡΠΎΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ SQL ΡΡΠΈΠΊΠΎΠ²Π΅, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΠΏΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅Π΄ ΠΈΠ»ΠΈ N ΡΠ΅Π΄Π°, Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΊΠΎΠΉ ΡΠ΅Π΄ ΡΠ»Π΅Π΄Π²Π° ΡΠ»Π΅Π΄ N-ΡΠΈ ΡΠ΅Π΄ ΠΈ Ρ.Π½. ΠΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Ρ join-ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ Π·Π° 16000 ΡΠ΄Π΅Π»ΠΊΠΈ VOD.L (ΠΠΎΠ΄Π°ΡΠΎΠ½) ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ° Ρ 500 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡΠ½Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ½Π° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
Β
ΠΡΠΈΠΌΠ΅Ρ Π·Π° join ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ β ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° quote ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠ²Π° VOD.L Π² where, Π½Π΅ΡΠ²Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΡΡ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° sym ΠΈ ΡΠ°ΠΊΡΡΡ, ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ° ΡΠΎΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ join-ΠΎΠ²Π΅ Π² 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 (ΠΊΠΎΠΈΡΠΎ Π² Q ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ adverbs), Π½ΠΈΠΊΠΎΠ³Π° Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅, Π·Π°ΠΌΠ΅Π½ΡΠΉΠΊΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π½Π°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° N-ΡΠΎ Π²Ρ ΠΎΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΠΈΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ΅:
1. (where element=vector)[N]Β Β
Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠΆΠ°ΡΠ½ΠΎ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ Π½Π° C/Java (ΡΡΠ·Π΄Π°Π²Π° Π±ΡΠ»Π΅Π² Π²Π΅ΠΊΡΠΎΡ, where Π²ΡΡΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π½Π° ΠΈΡΡΠΈΠ½ΡΠΊΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² Π½Π΅Π³ΠΎ). ΠΠΎ ΡΠ°ΠΊΠ°Π²Π° Π·Π°ΠΏΠΈΡ ΠΏΡΠ°Π²ΠΈ ΡΠΌΠΈΡΡΠ»Π° Π½Π° ΠΈΠ·ΡΠ°Π·Π° ΠΏΠΎ-ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈ Π²ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π±ΡΡΠ·ΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π±Π°Π²Π½ΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ. ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈΡ Π΅Π·ΠΈΠΊ ΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π΅ ΡΡΠ°Π²Π½ΠΈΠΌΠ° Ρ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ, ΠΈ ΠΊΡΠΌ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡΠ΅.
Β
ΠΡΠΊΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΡΡΠΎ ΡΠ° Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ ΠΎΡ QSQL. Π€Π°ΠΊΡΡΡ Π΅, ΡΠ΅ ΡΠΎΠΉ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° ΠΈΡΡΠΈΠ½ΡΠΊΠΈ SQL. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° SQL-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ°. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌ Π΄Π° ΠΏΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΈ ΡΠΎ Π½Π° Q, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΠ° Π½Π΅ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ. ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ½ΠΈΡ ΠΊΡΡΠΈΡ-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ.
Β
ΠΠ°ΡΠΎ ΠΏΠ»ΡΡ ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΏΠΎ Q β Q For Mortals Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ Π½Π° , ΠΊΡΠ΄Π΅ΡΠΎ Π΅ ΡΡΠ±ΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ.
Β
ΠΡΠ΅ Π΅Π΄ΠΈΠ½ Π³ΠΎΠ»ΡΠΌ ΠΌΠΈΠ½ΡΡ β ΡΠ΅Π½Π°ΡΠ° Π½Π° Π»ΠΈΡΠ΅Π½Π·Π°. Π’ΠΎΠ²Π° ΡΠ° Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π΄ΠΎΠ»Π°ΡΠΈ Π³ΠΎΠ΄ΠΈΡΠ½ΠΎ Π·Π° Π΅Π΄ΠΈΠ½ CPU. Π‘Π°ΠΌΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈ. ΠΠ°ΡΠΊΠΎΡΠΎ KX Π½Π°ΠΏΡΠ°Π²ΠΈ Π»ΠΈΡΠ΅Π½Π·Π° ΠΏΠΎ-Π³ΡΠ²ΠΊΠ°Π² ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΏΠ»Π°ΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π΄Π° Π½Π°Π΅ΠΌΠ΅ΡΠ΅ KDB+ Π² ΠΎΠ±Π»Π°ΡΠΈΡΠ΅ Π½Π° Google ΠΈ Amazon. KX ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΡΠΎ ΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ (32-Π±ΠΈΡΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ ΠΈΠ»ΠΈ 64-Π±ΠΈΡΠΎΠ²Π° ΠΏΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅).
Β
ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΄ΠΎΡΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ β ΠΊΠΎΠ»ΠΎΠ½Π½ΠΈ, in-memory, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ Π² ΡΠΎΠ²Π°, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π―ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ Clickhouse. Π’Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ
ΠΎΠ΄Π΅Π½ Ρ KDB+ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π½ΡΠΊΠΎΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΡΡ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ KDB+, ΠΌΠ°ΠΊΠ°Ρ ΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ. ΠΠΎ Π΄ΠΎΡΠΈ ΠΈ ΠΊΠ°ΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Clickhouse Π΅ ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡ KDB+ β ΡΠ΅Π± Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΡΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΈΡΠΈ (ΡΠΎΠ²Π° ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ β Π·Π°ΡΠ°Π΄ΠΈ Π½Π΅Π³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² 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')Β Β
ΠΡΡΠ·ΠΊΠΈ
Π‘Π°ΠΉΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° β
Π‘Π°ΠΉΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ β
ΠΠ½ΠΈΠ³Π° Q For Mortals (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ) β
Π‘ΡΠ°ΡΡΠΈ Π½Π° ΡΠ΅ΠΌΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ KDB+ / Q ΠΎΡ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° kx β
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
