Langue Q - Tables sur disque

Les données de votre disque dur (également appelée base de données historique) peuvent être enregistrées dans trois formats différents: fichiers plats, tables évasées et tables partitionnées. Ici, nous allons apprendre à utiliser ces trois formats pour enregistrer des données.

Fichier plat

Les fichiers plats sont entièrement chargés en mémoire, c'est pourquoi leur taille (encombrement mémoire) doit être réduite. Les tables sont enregistrées sur disque entièrement dans un seul fichier (la taille compte donc).

Les fonctions utilisées pour manipuler ces tables sont set/get -

`:path_to_file/filename set tablename

Prenons un exemple pour montrer comment cela fonctionne -

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

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

Dans l'environnement Windows, les fichiers plats sont enregistrés à l'emplacement - C:\q\w32

Récupérez le fichier plat de votre disque (base de données historique) et utilisez le get commande comme suit -

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

Une nouvelle table est créée tab2 avec son contenu stocké dans tab1_test fichier.

Tables évasées

S'il y a trop de colonnes dans une table, alors nous stockons ces tables au format évasé, c'est-à-dire que nous les sauvegardons sur disque dans un répertoire. Dans le répertoire, chaque colonne est enregistrée dans un fichier séparé sous le même nom que le nom de la colonne. Chaque colonne est enregistrée sous forme de liste de type correspondant dans un fichier binaire kdb +.

L'enregistrement d'une table au format évasé est très utile lorsque nous devons accéder fréquemment à seulement quelques colonnes parmi ses nombreuses colonnes. Un répertoire de table évasé contient.d fichier binaire contenant l'ordre des colonnes.

Tout comme un fichier plat, un tableau peut être enregistré comme évasé en utilisant le setcommander. Pour enregistrer une table comme évasée, le chemin du fichier doit se terminer par un jeu -

`:path_to_filename/filename/ set tablename

Pour lire une table évasée, nous pouvons utiliser le get fonction -

tablename: get `:path_to_file/filename

Note - Pour qu'une table soit enregistrée comme évasée, elle doit être non saisie et énumérée.

Dans l'environnement Windows, votre structure de fichiers apparaîtra comme suit -

Tables partitionnées

Les tables partitionnées offrent un moyen efficace de gérer d'énormes tables contenant des volumes de données importants. Les tables partitionnées sont des tables réparties sur plusieurs partitions (répertoires).

A l'intérieur de chaque partition, une table aura son propre répertoire, avec la structure d'une table évasée. Les tableaux pourraient être fractionnés sur une base jour / mois / année afin de fournir un accès optimisé à son contenu.

Pour obtenir le contenu d'une table partitionnée, utilisez le bloc de code suivant -

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

Essayons d'obtenir le contenu d'une table d'échange -

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 - Le mode partitionné convient aux tables contenant des millions d'enregistrements par jour (c'est-à-dire des données de séries chronologiques)

Fichier Sym

Le fichier sym est un fichier binaire kdb + contenant la liste des symboles de toutes les tables évasées et partitionnées. Il peut être lu avec,

get `:sym

fichier par.txt (facultatif)

Il s'agit d'un fichier de configuration, utilisé lorsque les partitions sont réparties sur plusieurs répertoires / lecteurs de disque, et contient les chemins vers les partitions de disque.