Mam aplikację C, która przesyła dane do tabeli pamięci kdb przez cały dzień, ostatecznie przerastając rozmiar mojej pamięci RAM serwera. Ostatecznie celem jest przechowywanie danych na dysku, dlatego postanowiłem uruchomić funkcję partycji czasowej, aby stopniowo przesyłać dane. Wpadłem na ten kod:Jak prawidłowo podzielić tabelę w czasie rzeczywistym w kdb?
part_timer : { []
(`$db) upsert .Q.en[`$sym_path] select [20000] ts,exch,ticker,side,price,qty,bid,ask from md;
delete from `md where i<20000
}
.z.ts: part_timer
.z.zd: 17 2 6i
\t 1000
Czy to właściwy sposób na podział danych strumieniowych w czasie rzeczywistym? Jak napisałbyś ten kod? Obawiam się, że instrukcja delete nie jest zsynchronizowana z select.
Dzięki za wywołania .Q, dodam je do mojego skryptu. Nie mogę się doczekać końca dnia na przechowywanie danych, wyjaśniłem w pytaniu, że tabela pamięci przerośnie naszą zainstalowaną pamięć RAM, więc staram się przechować na dysku stopniowo. –
Ah tęskniłem; w takim przypadku dopisz jak w w.q, jak ktoś powiedział: –
Czy możliwe jest użycie .Q.dpft [] do dołączania wierszy? Brzmi trudno dla kdb. Jeśli nie, w jaki sposób mogę efektywnie zreorganizować db na koniec dnia, aby sekwencyjnie przechowywać symbole? –