GaiaEx AcademyGaiaEx Academy
KDB+/Q: język baz danych tickowych
DeweloperProgramowanie11 min read

KDB+/Q: język baz danych tickowych

Jak Wall Street przechowuje i odpytuje miliardy punktów danych rynkowych

Udostępnij posty

KDB+ i Q w jednej minucie

KDB+ to kolumnowa baza danych szeregów czasowych; Q to jej język wektorowy. Firmy sell-side i buy-side przyjęły ją do przechowywania danych tickowych, złączeń i analityki przesuwnej, gdzie skanowanie kolumn pobija pętle wiersz-po-wierszu.

Wydajność pochodzi z układu kolumnowego, agresywnego użycia mapowania pamięci i operacji wektorowych zaimplementowanych blisko sprzętu. To nie jest ogólne zastąpienie OLTP; jest dostrojona do szeregów czasowych z intensywnym dopisywaniem.

Układ kolumnowy (koncepcyjnie) sym A A B czas t₁ t₂ t₃ cena p₁ p₂ p₃ Operacje wektorowe dotykają ciągłych tablic → skany przyjazne dla pamięci podręcznej Schemat i typy wciąż mają znaczenie: złe listy sym kosztują miejsce
Tabele są wektorami kolumn; analityka filtruje i agreguje wzdłuż kolumn i czasu.

Podstawy Q

Q jest zwięzły i czytany od prawej do lewej. Wektory są natywne; pętle istnieją, ale gorące ścieżki ich unikają. Tabele są słownikami kolumn, co odpowiada temu, jak dane tickowe są przechowywane.

prices: 100.5 101.2 99.8
avg prices
deltas prices

Czytelny Q pochodzi z małych funkcji i komentarzy — sama gęstość nie jest cnotą we współdzielonych bazach kodu.

Tickerplant, RDB, HDB

Typowy wzorzec: tickerplant pobiera kanały danych i rozprowadza je do subskrybentów; baza danych czasu rzeczywistego przechowuje aktualną sesję; baza danych historyczna przechowuje partycjonowaną historię na dysku. Procesy końca dnia przenoszą RT do partycji HDB.

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

Krypto nigdy się nie zamyka, więc granice „sesji" są decyzjami operacyjnymi, nie dzwonkami giełdowymi.

Potok tickowy (klasyczny trzyczęściowy) Obsługa kanałów Normalizacja symboli Znacznik czasu na granicy Tickerplant Log + pub/sub Brak długoterminowego przechowywania RDB + HDB Śróddzienny vs historia Partycjonowanie według daty Odtworzenie po szczelinach używa logów; weryfikuj szczeliny kanałów i późne korekty Kanały krypto mogą wybuchać: dopasuj bufory i przeciwciśnienie
Rozdzielenie czasu rzeczywistego i historii utrzymuje gorące ścieżki małe, a zapytania przewidywalne.

Gdzie się pojawia

Firmy używają KDB+ do paneli nadzoru, analityki kwotowań i zestawów danych badawczych. Nazwy i wdrożenia się różnią; wzorzec to szybkie krojenie i dzielenie tików i zleceń.

Giełdy krypto generują ciągłe dane — zaplanuj retencję, odtwarzanie i eksport zgodności z wyprzedzeniem.

Koszt licencji i alternatywy

Licencjonowanie komercyjne i specjalizowane zatrudnienie są realnymi kosztami. Otwarte alternatywy (ClickHouse, Timescale, QuestDB, DuckDB nad Parquet) wymieniają dopasowanie ekosystemu na cenę. Testuj benchmarki na swoim mixie zapytań, nie na slajdach dostawcy.

Stosy tickowe krypto

Wiele zespołów łączy Kafka lub Redpanda z przechowywaniem kolumnowym i silnikami SQL. Niezmiennik z KDB+ wciąż się stosuje: partycjonuj według czasu, utrzymuj ścisłe schematy i mierz opóźnienie od-do-końca od znacznika czasu giełdy do wyniku zapytania.

Konsumenci API GaiaEx powinni logować znaczniki czasu serwera i identyfikatory sekwencji, jeśli są udostępnione — korelacja pobija zgadywanie.