Q Sprache - Tabellen auf der Festplatte

Daten auf Ihrer Festplatte (auch als historische Datenbank bezeichnet) können in drei verschiedenen Formaten gespeichert werden: Flat Files, Splayed Tables und Partitioned Tables. Hier erfahren Sie, wie Sie diese drei Formate zum Speichern von Daten verwenden.

Flatfile

Flache Dateien werden vollständig in den Speicher geladen, weshalb ihre Größe (Speicherbedarf) gering sein sollte. Tabellen werden vollständig in einer Datei auf der Festplatte gespeichert (daher spielt die Größe eine Rolle).

Die Funktionen zum Bearbeiten dieser Tabellen sind set/get - -

`:path_to_file/filename set tablename

Nehmen wir ein Beispiel, um zu demonstrieren, wie es funktioniert -

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

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

In einer Windows-Umgebung werden Flatfiles am Speicherort gespeichert. C:\q\w32

Holen Sie sich die Flatfile von Ihrer Festplatte (historische Datenbank) und verwenden Sie die get Befehl wie folgt -

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

Eine neue Tabelle wird erstellt tab2 mit seinem Inhalt gespeichert in tab1_test Datei.

Gespielte Tische

Wenn eine Tabelle zu viele Spalten enthält, speichern wir solche Tabellen im gespreizten Format, dh wir speichern sie auf der Festplatte in einem Verzeichnis. Innerhalb des Verzeichnisses wird jede Spalte in einer separaten Datei unter demselben Namen wie der Spaltenname gespeichert. Jede Spalte wird als Liste des entsprechenden Typs in einer kdb + -Binärdatei gespeichert.

Das Speichern einer Tabelle im gespreizten Format ist sehr nützlich, wenn wir nur häufig auf wenige Spalten aus den vielen Spalten zugreifen müssen. Ein gespreiztes Tabellenverzeichnis enthält.d Binärdatei, die die Reihenfolge der Spalten enthält.

Ähnlich wie bei einer Flatfile kann eine Tabelle mit dem Befehl gespreizt gespeichert werden setBefehl. Um eine Tabelle als gespreizt zu speichern, sollte der Dateipfad mit einem Spiel enden -

`:path_to_filename/filename/ set tablename

Zum Lesen einer gespreizten Tabelle können wir die verwenden get Funktion -

tablename: get `:path_to_file/filename

Note - Damit eine Tabelle als gespreizt gespeichert werden kann, muss sie nicht verschlüsselt und aufgelistet sein.

In der Windows-Umgebung wird Ihre Dateistruktur wie folgt angezeigt:

Partitionierte Tabellen

Partitionierte Tabellen bieten eine effiziente Möglichkeit, große Tabellen mit erheblichen Datenmengen zu verwalten. Partitionierte Tabellen sind gespreizte Tabellen, die auf mehrere Partitionen (Verzeichnisse) verteilt sind.

Innerhalb jeder Partition verfügt eine Tabelle über ein eigenes Verzeichnis mit der Struktur einer gespreizten Tabelle. Die Tabellen können nach Tag / Monat / Jahr aufgeteilt werden, um einen optimierten Zugriff auf den Inhalt zu ermöglichen.

Verwenden Sie den folgenden Codeblock, um den Inhalt einer partitionierten Tabelle abzurufen:

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 ….

Lassen Sie uns versuchen, den Inhalt einer Handelstabelle zu erhalten -

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 - Der partitionierte Modus eignet sich für Tabellen mit Millionen von Datensätzen pro Tag (dh Zeitreihendaten).

Sym-Datei

Die sym-Datei ist eine kdb + -Binärdatei, die die Liste der Symbole aus allen gespreizten und partitionierten Tabellen enthält. Es kann gelesen werden mit,

get `:sym

par.txt-Datei (optional)

Dies ist eine Konfigurationsdatei, die verwendet wird, wenn Partitionen auf mehrere Verzeichnisse / Festplatten verteilt sind und die Pfade zu den Festplattenpartitionen enthalten.