Architettura KDB +

Kdb + è un database ad alte prestazioni e ad alto volume progettato fin dall'inizio per gestire enormi volumi di dati. È completamente a 64 bit e dispone di elaborazione multi-core e multi-threading incorporati. La stessa architettura viene utilizzata per i dati storici e in tempo reale. Il database incorpora il proprio potente linguaggio di query,q, in modo che l'analisi possa essere eseguita direttamente sui dati.

kdb+tick è un'architettura che consente l'acquisizione, l'elaborazione e l'interrogazione di dati storici e in tempo reale.

Kdb + / tick Architecture

La figura seguente fornisce una descrizione generale di una tipica architettura Kdb + / tick, seguita da una breve spiegazione dei vari componenti e del flusso di dati.

  • Il Data Feeds sono dati di serie temporali forniti principalmente dai fornitori di feed di dati come Reuters, Bloomberg o direttamente dalle borse.

  • Per ottenere i dati pertinenti, i dati del feed di dati vengono analizzati da feed handler.

  • Una volta che i dati vengono analizzati dal gestore del feed, passano al file ticker-plant.

  • Per recuperare i dati da qualsiasi errore, il ticker-plant prima aggiorna / memorizza i nuovi dati nel file di registro e quindi aggiorna le proprie tabelle.

  • Dopo l'aggiornamento delle tabelle interne e dei file di registro, i dati del ciclo di tempo vengono continuamente inviati / pubblicati al database in tempo reale e tutti gli abbonati concatenati che hanno richiesto i dati.

  • Alla fine di una giornata lavorativa, il file di log viene cancellato, ne viene creato uno nuovo e il database in tempo reale viene salvato nel database storico. Una volta salvati tutti i dati nel database storico, il database in tempo reale cancella le sue tabelle.

Componenti di Kdb + Tick Architecture

Feed di dati

I feed di dati possono essere qualsiasi mercato o altri dati di serie temporali. Considera i feed di dati come input grezzo per il gestore dei feed. I feed possono provenire direttamente dallo scambio (dati in live streaming), dai fornitori di notizie / dati come Thomson-Reuters, Bloomberg o qualsiasi altra agenzia esterna.

Gestore di alimentazione

Un gestore di feed converte il flusso di dati in un formato adatto per la scrittura su kdb +. È collegato al feed di dati e recupera e converte i dati dal formato specifico del feed in un messaggio Kdb + che viene pubblicato nel processo ticker-plant. Generalmente viene utilizzato un alimentatore per eseguire le seguenti operazioni:

  • Acquisisci i dati in base a una serie di regole.
  • Traduci (/ arricchisci) i dati da un formato all'altro.
  • Cattura i valori più recenti.

Ticker Plant

Ticker Plant è il componente più importante dell'architettura KDB +. E 'il ticker plant con il quale si connettono il database real-time o direttamente gli abbonati (client) per accedere ai dati finanziari. Opera inpublish and subscribemeccanismo. Una volta ottenuto un abbonamento (licenza), viene definita una pubblicazione tick (di routine) dall'editore (impianto ticker). Esegue le seguenti operazioni:

  • Riceve i dati dal gestore del feed.

  • Immediatamente dopo che l'impianto ticker ha ricevuto i dati, ne memorizza una copia come file di registro e lo aggiorna una volta che l'impianto ticker ottiene un aggiornamento in modo che in caso di guasto non dovremmo avere alcuna perdita di dati.

  • I clienti (abbonato in tempo reale) possono iscriversi direttamente al ticker-plant.

  • Alla fine di ogni giornata lavorativa, cioè una volta che il database in tempo reale riceve l'ultimo messaggio, memorizza tutti i dati odierni nel database storico e invia gli stessi a tutti gli iscritti che si sono iscritti per i dati odierni. Quindi reimposta tutte le sue tabelle. Il file di registro viene inoltre eliminato una volta che i dati sono stati memorizzati nel database storico o in un altro abbonato collegato direttamente al database in tempo reale (rtdb).

  • Di conseguenza, il ticker-plant, il database in tempo reale e il database storico sono operativi 24 ore su 24, 7 giorni su 7.

Poiché il ticker-plant è un'applicazione Kdb +, le sue tabelle possono essere interrogate usando qcome qualsiasi altro database Kdb +. Tutti i client ticker-plant dovrebbero avere accesso al database solo come abbonati.

Database in tempo reale

Un database in tempo reale (rdb) memorizza i dati di oggi. È direttamente collegato all'impianto ticker. In genere viene archiviato in memoria durante le ore di mercato (un giorno) e scritto nel database storico (hdb) alla fine della giornata. Poiché i dati (dati rdb) vengono archiviati in memoria, l'elaborazione è estremamente veloce.

Poiché kdb + consiglia di avere una dimensione della RAM che è quattro o più volte la dimensione prevista dei dati al giorno, la query eseguita su rdb è molto veloce e fornisce prestazioni superiori. Poiché un database in tempo reale contiene solo i dati di oggi, la colonna della data (parametro) non è richiesta.

Ad esempio, possiamo avere query rdb come,

select from trade where sym = `ibm

OR

select from trade where sym = `ibm, price > 100

Database storico

Se dobbiamo calcolare le stime di un'azienda, dobbiamo avere a disposizione i suoi dati storici. Un database storico (hdb) contiene i dati delle transazioni effettuate in passato. Il record di ogni nuovo giorno verrà aggiunto all'hdb alla fine della giornata. Le tabelle di grandi dimensioni nell'hdb vengono archiviate in visualizzazione (ogni colonna è archiviata in un proprio file) o vengono archiviate partizionate da dati temporali. Anche alcuni database molto grandi possono essere ulteriormente partizionati utilizzandopar.txt (file).

Queste strategie di archiviazione (suddivise, partizionate, ecc.) Sono efficienti durante la ricerca o l'accesso ai dati da una tabella di grandi dimensioni.

Un database storico può essere utilizzato anche per scopi di reportistica interna ed esterna, ovvero per analisi. Ad esempio, supponiamo di voler ottenere le transazioni aziendali di IBM per un particolare giorno dal nome della tabella commerciale (o qualsiasi), dobbiamo scrivere una query come segue:

thisday: 2014.10.12

select from trade where date = thisday, sym =`ibm

Note - Scriveremo tutte queste domande una volta che avremo una panoramica del file q linguaggio.