Q Dili - Diskteki Tablolar
Sabit diskinizdeki veriler (tarihsel veritabanı da denir) üç farklı formatta kaydedilebilir - Düz Dosyalar, Yayılmış Tablolar ve Bölümlenmiş Tablolar. Burada, verileri kaydetmek için bu üç formatı nasıl kullanacağımızı öğreneceğiz.
Düz bir dosya
Düz dosyalar belleğe tam olarak yüklenir, bu nedenle boyutları (bellek ayak izi) küçük olmalıdır. Tablolar tamamen tek bir dosyada diske kaydedilir (bu nedenle boyut önemlidir).
Bu tabloları değiştirmek için kullanılan işlevler set/get -
`:path_to_file/filename set tablename
Nasıl çalıştığını göstermek için bir örnek alalım -
q)tables `.
`s#`t`tab`tab1
q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test
Windows ortamında, düz dosyalar konuma kaydedilir - C:\q\w32
Düz dosyayı diskinizden (tarihsel db) alın ve get aşağıdaki gibi komut -
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
Yeni bir tablo oluşturuldu tab2 içeriği depolanmış tab1_test dosya.
Yayılı Tablolar
Tabloda çok fazla sütun varsa, bu tür tabloları yayılmış biçimde saklarız, yani onları bir dizine diske kaydederiz. Dizinin içinde, her sütun, sütun adıyla aynı adla ayrı bir dosyaya kaydedilir. Her sütun, bir kdb + ikili dosyasında karşılık gelen türlerin bir listesi olarak kaydedilir.
Bir tabloyu yayvan biçimde kaydetmek, birçok sütunundan yalnızca birkaç sütuna sıklıkla erişmemiz gerektiğinde çok kullanışlıdır. Yayılmış bir tablo dizini şunları içerir:.d sütunların sırasını içeren ikili dosya.
Düz bir dosyaya çok benzer şekilde, bir tablo aşağıdaki şekilde kaydedilebilir: setkomut. Bir tabloyu yayvan olarak kaydetmek için, dosya yolu bir boşlukla bitmelidir -
`:path_to_filename/filename/ set tablename
Yayılmış bir tabloyu okumak için, get işlev -
tablename: get `:path_to_file/filename
Note - Bir tablonun açık olarak kaydedilebilmesi için anahtarsız ve numaralandırılmış olması gerekir.
Windows ortamında dosya yapınız aşağıdaki gibi görünecektir -
Bölümlenmiş Tablolar
Bölümlendirilmiş tablolar, önemli miktarda veri içeren devasa tabloları yönetmek için etkili bir araç sağlar. Bölümlenmiş tablolar, daha fazla bölüme (dizinler) yayılmış yayılmış tablolardır.
Her bölümün içinde, bir tablonun, yayılmış bir tablonun yapısıyla birlikte kendi dizini olacaktır. Tablolar, içeriğine optimize edilmiş erişim sağlamak için gün / ay / yıl temelinde bölünebilir.
Bölümlenmiş bir tablonun içeriğini almak için aşağıdaki kod bloğunu kullanın -
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 ….
Bir ticaret tablosunun içeriğini almaya çalışalım -
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 - Bölümlenmiş mod, günde milyonlarca kayıt içeren tablolar için uygundur (yani, zaman serisi verileri)
Sym dosyası
Sym dosyası, tüm yayılmış ve bölümlenmiş tablolardan sembollerin listesini içeren bir kdb + ikili dosyasıdır. İle okunabilir,
get `:sym
par.txt dosyası (isteğe bağlı)
Bu, bölümler birkaç dizine / disk sürücüsüne yayıldığında kullanılan ve disk bölümlerinin yollarını içeren bir yapılandırma dosyasıdır.