kdb+/q
kdb+は、リアルタイムデータおよび履歴データ用に最適化された高性能の分析データベースです。 kdbの世界でテーブルと呼んでいるもの → 単にネストしたDictionaryを変形させたもの
kdbにおけるテーブルというのは、Listを要素として持つDictionaryをflip(転置)したものに過ぎず、他のデータベースで扱われるような、カプセル化された特別なデータ型というわけではない。 テーブルデータはqの実装を通じて、自由自在に変形、加工できる。
テーブルの各カラムは元々がDictionaryのKey/valueであることから、kdbは本質的に列指向データベース qの世界におけるあらゆるデータはAtomかvectorのどちらかに大別される
q言語にはnullに型が存在
当然、型が異なるnullは等価ではない。
シンボル型(Erlangのatomとかと同じそう)
code:q.q
`foo
` /symbol型のNull値
Listに対する柔軟なindex操作
データの持ち方や場所に決まった形式があるわけではなく、q言語上でネストした辞書型データを変形させたものを「テーブル」と呼んでいて、それをメモリに持てばインメモリ「DB」だし、ディスクに永続化すればインメモリじゃない「DB」だと捉えられるって感じ
標準的なSQLの多くが集合論を基盤としているのに対し、kdb+は順序付きリストのベクトルを基盤 順序概念を持たないSQLでは以下のような処理が困難
価格上位3銘柄の検索
時価総額下位3銘柄
順序付きベクトルを基盤としていると
順序管理機能は多くのクエリ処理を大幅に簡素化できる
近代化された kdb/+q の新ラインタイム「L」