Ho un'applicazione C che esegue lo streaming di dati su una tabella di memoria kdb tutto il giorno, superando la dimensione della RAM del mio server. L'obiettivo finale è archiviare i dati su disco, quindi ho deciso di eseguire una funzione di partizione del timer per trasferire i dati gradualmente. Ho trovato questo codice:Come partizionare correttamente una tabella in tempo reale in 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
È questo il modo corretto di partizionare i dati di streaming in tempo reale? Come scriveresti questo codice? Sono preoccupato che l'istruzione delete non sia sincronizzata con la selezione.
Grazie per le chiamate .Q, le aggiungerò al mio script. Non posso aspettare la fine della giornata per archiviare i dati, ho spiegato nella domanda che il tavolo di memoria supererebbe la nostra RAM installata, quindi sto cercando di archiviare su disco gradualmente. –
Ah, mi sono perso; in tal caso, aggiungere come in w.q come qualcuno ha detto –
È possibile utilizzare .Q.dpft [] per aggiungere righe? Sembra difficile per kdb. In caso contrario, come posso riorganizzare efficacemente il db alla fine della giornata per memorizzare i simboli in sequenza? –