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値
https://bering.hatenadiary.com/entry/2023/03/26/234841
Listに対する柔軟なindex操作
https://bering.hatenadiary.com/entry/2023/03/26/235155#ListによるIndexing
データの持ち方や場所に決まった形式があるわけではなく、q言語上でネストした辞書型データを変形させたものを「テーブル」と呼んでいて、それをメモリに持てばインメモリ「DB」だし、ディスクに永続化すればインメモリじゃない「DB」だと捉えられるって感じ
https://x.com/_Bassari/status/1662454162653847552
SQLとの比較
​標準的な​SQLの​多くが​集合論を​基盤と​しているのに​対し、​kdb+は​順序付きリストの​ベクトルを​基盤
順序概念を​持たない​​SQLでは​以下のような​処理が困難
価格上位3銘柄の​検索
時価総額下位3銘柄
順序付きベクトルを基盤としていると
順序管理機能は​多くの​クエリ処理を​大幅に​簡素化できる
近代化された kdb/+q の新ラインタイム「L」
https://lv1.sh/
Why l. | l
アーサー・ホイットニーのインタビュー記事: A Conversation with Arthur Whitney - ACM Queue
チュートリアル: Kdb+ Tutorials » Kdb+ Tutorials
公式サイト: kdb+ | KX
#データベース
#プログラミング言語