Q Language - Tabelle su disco

I dati sul disco rigido (chiamato anche database storico) possono essere salvati in tre diversi formati: file flat, tabelle splayed e tabelle partizionate. Qui impareremo come utilizzare questi tre formati per salvare i dati.

Archivio base

I file flat vengono caricati completamente in memoria, motivo per cui la loro dimensione (footprint di memoria) dovrebbe essere piccola. Le tabelle vengono salvate su disco interamente in un file (quindi le dimensioni contano).

Le funzioni utilizzate per manipolare queste tabelle sono set/get -

`:path_to_file/filename set tablename

Facciamo un esempio per dimostrare come funziona:

q)tables `.
`s#`t`tab`tab1 

q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test

In ambiente Windows, i file flat vengono salvati nella posizione: C:\q\w32

Ottieni il file flat dal tuo disco (db storico) e usa l'estensione get comando come segue -

q)tab2: get `:c:/q/w32/tab1_test

q)tab2

   sym    |   time           price   size
--------- | -------------------------------
  APPLE   | 11:16:39.779   8.388858   12
  MSFT    | 11:16:39.779   19.59907   10
  IBM     | 11:16:39.779   37.5638    1
 SAMSUNG  | 11:16:39.779   61.37452   90
  APPLE   | 11:16:39.779   52.94808   73

Viene creata una nuova tabella tab2 con il suo contenuto memorizzato in tab1_test file.

Tabelle divaricate

Se ci sono troppe colonne in una tabella, memorizziamo tali tabelle in un formato aperto, ovvero le salviamo su disco in una directory. All'interno della directory, ogni colonna viene salvata in un file separato con lo stesso nome del nome della colonna. Ogni colonna viene salvata come un elenco del tipo corrispondente in un file binario kdb +.

Il salvataggio di una tabella in formato aperto è molto utile quando dobbiamo accedere frequentemente solo a poche colonne dalle sue numerose colonne. Una directory di tabella visualizzata contiene.d file binario che contiene l'ordine delle colonne.

Proprio come un file flat, una tabella può essere salvata come visualizzata utilizzando l'estensione setcomando. Per salvare una tabella come visualizzata, il percorso del file dovrebbe terminare con una barra rovesciata -

`:path_to_filename/filename/ set tablename

Per leggere una tabella allargata, possiamo usare il get funzione -

tablename: get `:path_to_file/filename

Note - Affinché una tabella venga salvata come visualizzata, dovrebbe essere senza chiave ed enumerata.

In ambiente Windows, la struttura del file apparirà come segue:

Tabelle partizionate

Le tabelle partizionate forniscono un mezzo efficiente per gestire tabelle enormi contenenti volumi significativi di dati. Le tabelle partizionate sono tabelle distribuite su più partizioni (directory).

All'interno di ogni partizione, una tabella avrà la propria directory, con la struttura di una tabella visualizzata. Le tabelle potrebbero essere suddivise su base giorno / mese / anno per fornire un accesso ottimizzato al suo contenuto.

Per ottenere il contenuto di una tabella partizionata, utilizzare il seguente blocco di codice:

q)get `:c:/q/data/2000.01.13              // “get” command used, sample folder

quote| +`sym`time`bid`ask`bsize`asize`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0
0 0 0….

trade| +`sym`time`price`size`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 ….

Proviamo a ottenere il contenuto di una tabella commerciale -

q)get `:c:/q/data/2000.01.13/trade

   sym    time            price     size    ex
--------------------------------------------------
    0   09:30:00.496    0.4092016    7      T
    0   09:30:00.501    1.428629     4      N
    0   09:30:00.707    0.5647834    6      T
    0   09:30:00.781    1.590509     5      T
    0   09:30:00.848    2.242627     3      A
    0   09:30:00.860    2.277041     8      T
    0   09:30:00.931    0.8044885    8      A
    0   09:30:01.197    1.344031     2      A
    0   09:30:01.337    1.875        3      A
    0   09:30:01.399    2.187723     7      A

Note - La modalità partizionata è adatta per tabelle con milioni di record al giorno (cioè dati di serie temporali)

File Sym

Il file sym è un file binario kdb + contenente l'elenco dei simboli da tutte le tabelle splay e partizionate. Può essere letto con,

get `:sym

file par.txt (opzionale)

Questo è un file di configurazione, utilizzato quando le partizioni sono distribuite su più directory / unità disco e contengono i percorsi delle partizioni del disco.