GaiaEx AcademyGaiaEx Academy
KDB+/Q: ടിക് ഡേറ്റാബേസുകളുടെ ഭാഷ
ഡെവലപ്പർപ്രോഗ്രാമിംഗ്11 min read

KDB+/Q: ടിക് ഡേറ്റാബേസുകളുടെ ഭാഷ

വാൾ സ്ട്രീറ്റ് ബില്യൺ കണക്കിന് മാർക്കറ്റ് ഡേറ്റ പോയിന്റുകൾ എങ്ങനെ സൂക്ഷിക്കുകയും ക്വറി ചെയ്യുകയും ചെയ്യുന്നു

പോസ്റ്റുകൾ പങ്കിടുക

ഒരു മിനിറ്റിൽ KDB+ ഉം Q ഉം

KDB+ ഒരു കോളം-അധിഷ്ഠിത ടൈം-സീരീസ് ഡേറ്റാബേസ് ആണ്; Q അതിന്റെ വെക്ടർ ലാംഗ്വേജ് ആണ്. Sell-side, buy-side ഫേമുകൾ ടിക്ക് സ്റ്റോറേജിനും, ജോയിനുകൾക്കും, റോളിംഗ് അനലിറ്റിക്സിനും ഇത് സ്വീകരിച്ചു — അവിടെ കോളം സ്കാൻ ചെയ്യുന്നത് row-by-row ലൂപ്പുകളെക്കാൾ മികച്ചതാണ്.

പെർഫോമൻസ് വരുന്നത് കോളമാർ ലേഔട്ടിൽ നിന്നും, മെമ്മറി മാപ്പിംഗിന്റെ ശക്തമായ ഉപയോഗത്തിൽ നിന്നും, ഹാർഡ്‌വെയറിനോട് അടുത്ത് നടപ്പിലാക്കിയ വെക്ടർ പ്രിമിറ്റീവുകളിൽ നിന്നുമാണ്. ഇത് ഒരു പൊതു OLTP പകരക്കാരനല്ല; append-heavy ടൈം സീരീസിനായി ട്യൂൺ ചെയ്തതാണ്.

Columnar layout (conceptual) sym A A B time t₁ t₂ t₃ price p₁ p₂ p₃ Vector ops touch contiguous arrays → cache-friendly scans Schema and types still matter: bad sym lists cost space
പട്ടികകൾ കോളം വെക്ടറുകളാണ്; അനലിറ്റിക്സ് കോളങ്ങളിലൂടെയും സമയത്തിലൂടെയും ഫിൽട്ടർ ചെയ്യുകയും അഗ്രിഗേറ്റ് ചെയ്യുകയും ചെയ്യുന്നു.

Q അടിസ്ഥാനങ്ങൾ

Q ഒതുക്കമുള്ളതും വലത്-നിന്ന്-ഇടത്തേക്കുള്ളതുമാണ്. വെക്ടറുകൾ സ്വാഭാവികമാണ്; ലൂപ്പുകൾ ഉണ്ട്, പക്ഷേ hot path-കൾ അവയെ ഒഴിവാക്കുന്നു. ടിക്ക് ഡേറ്റ സംഭരിക്കുന്ന രീതിയുമായി പട്ടികകൾ പൊരുത്തപ്പെടുന്നു — അവ കോളങ്ങളുടെ ഡിക്ഷണറികളാണ്.

prices: 100.5 101.2 99.8
avg prices
deltas prices

വായിക്കാവുന്ന Q ചെറിയ ഫങ്ഷനുകളിൽ നിന്നും കമന്റുകളിൽ നിന്നും വരുന്നു — പങ്കിട്ട കോഡ്ബേസുകളിൽ ഒതുക്കം മാത്രം ഒരു ഗുണമല്ല.

Tickerplant, RDB, HDB

ഒരു സാധാരണ പാറ്റേൺ: ഒരു tickerplant ഫീഡുകൾ ഇൻജെസ്റ്റ് ചെയ്ത് സബ്‌സ്ക്രൈബർമാർക്ക് ഫാൻ ഔട്ട് ചെയ്യുന്നു; ഒരു റിയൽ-ടൈം ഡേറ്റാബേസ് നിലവിലെ സെഷൻ സൂക്ഷിക്കുന്നു; ഒരു ഹിസ്റ്റോറിക്കൽ ഡേറ്റാബേസ് ഡിസ്കിൽ പാർട്ടീഷൻ ചെയ്ത ചരിത്രം സംഭരിക്കുന്നു. End-of-day പ്രോസസ്സുകൾ RT-യെ HDB പാർട്ടീഷനുകളിലേക്ക് റോൾ ചെയ്യുന്നു.

select last price by sym from trades where time > .z.t - 00:05

ക്രിപ്റ്റോ ഒരിക്കലും അടയ്ക്കാത്തതിനാൽ, "സെഷൻ" അതിരുകൾ എക്സ്ചേഞ്ച് ബെല്ലുകൾ അല്ല, ഓപ്പറേഷണൽ തിരഞ്ഞെടുപ്പുകളാണ്.

Tick pipeline (classic three-piece) Feed handlers Normalize symbols Timestamp at boundary Tickerplant Log + pub/sub No long-term store RDB + HDB Intraday vs history Partition by date Gap recovery uses logs; verify feed gaps and late corrections Crypto feeds can burst: size buffers and back-pressure
റിയൽ-ടൈമും ഹിസ്റ്റോറിക്കലും വേർതിരിക്കുന്നത് hot path-കൾ ചെറുതും ക്വറികൾ പ്രവചനീയവുമാക്കുന്നു.

എവിടെയാണ് ഇത് കാണപ്പെടുന്നത്

ഫേമുകൾ KDB+ ഉപയോഗിക്കുന്നത് സർവൈലൻസ് ഡാഷ്ബോർഡുകൾക്കും, ക്വോട്ട് അനലിറ്റിക്സിനും, റിസർച്ച് ഡേറ്റാസെറ്റുകൾക്കുമാണ്. പേരുകളും ഡിപ്ലോയ്‌മെന്റുകളും വ്യത്യാസപ്പെടുന്നു; ടിക്കുകൾക്കും ഓർഡറുകൾക്കും മേലുള്ള വേഗതയുള്ള slice-and-dice ആണ് പാറ്റേൺ.

ക്രിപ്റ്റോ വേദികൾ തുടർച്ചയായ ഡേറ്റ ഉണ്ടാക്കുന്നു — റിറ്റൻഷൻ, റീപ്ലേ, കംപ്ലയൻസ് export മുൻകൂട്ടി പ്ലാൻ ചെയ്യുക.

ലൈസൻസ് ചെലവും ബദലുകളും

കൊമേഴ്‌ഷ്യൽ ലൈസൻസിംഗും സ്പെഷ്യലൈസ്ഡ് ഹയറിംഗും യഥാർത്ഥ ചെലവുകളാണ്. ഓപ്പൺ ബദലുകൾ (ClickHouse, Timescale, QuestDB, Parquet-നു മേൽ DuckDB) വില-ക്കായി ecosystem fit കൈമാറുന്നു. നിങ്ങളുടെ ക്വറി മിക്സിൽ ബെഞ്ച്മാർക്ക് ചെയ്യുക, vendor സ്ലൈഡുകളിലല്ല.

ക്രിപ്റ്റോ ടിക്ക് സ്റ്റാക്കുകൾ

പല ടീമുകളും Kafka അല്ലെങ്കിൽ Redpanda-യെ കോളമാർ സ്റ്റോറേജും SQL എഞ്ചിനുകളും ചേർത്ത് ഉപയോഗിക്കുന്നു. KDB+-ൽ നിന്നുള്ള invariant ഇപ്പോഴും ബാധകമാണ്: സമയം അനുസരിച്ച് പാർട്ടീഷൻ ചെയ്യുക, സ്കീമകൾ കർശനമായി സൂക്ഷിക്കുക, exchange timestamp-ൽ നിന്ന് ക്വറി ഫലം വരെയുള്ള end-to-end lag അളക്കുക.

GaiaEx API ഉപഭോക്താക്കൾ server timestamp-കളും sequence identifier-കളും — തുറന്നിട്ടുണ്ടെങ്കിൽ — ലോഗ് ചെയ്യണം; ഊഹത്തെക്കാൾ correlation മെച്ചമാണ്.