- KDB+ - 教程
- KDB+ - 概述
- KDB + - 架构( Architecture)
- Q编程语言(Q Programming Language)
- Q语言 - 类型转换(Type Casting)
- Q语言 - 时间数据(Temporal Data)
- Q Language - Lists
- Q语言 - 索引(Indexing)
- Q语言 - 词典(Dictionaries)
- Q Language - Table
- Q语言 - 动词和副词(Verb & Adverbs)
- Q Language - Joins
- Q语言 - 功能(Functions)
- Q语言 - 内置函数(Built-in Functions)
- Q语言 - 查询(Queries)
- Q - 进程间通信(Q - Inter-Process Communication)
- Q - Message Handler (.Z Library)
- Q语言 - 属性(Attributes)
- Q语言 - 功能查询(Functional Queries)
- Q语言 - 表算法(Table Arithmetic)
- Q语言 - 磁盘上的表(Tables on Disk)
- Q语言 - 维护功能(Maintenance Functions)
- KDB+ - 有用的资源
- KDB+ - 讨论
Q语言 - 磁盘上的表(Tables on Disk)
硬盘上的数据(也称为历史数据库)可以保存为三种不同的格式 - 平面文件,显示表和分区表。 在这里,我们将学习如何使用这三种格式来保存数据。
平面文件
平面文件完全加载到内存中,这就是它们的大小(内存占用)应该很小的原因。 表完全保存在磁盘上的一个文件中(因此大小很重要)。
用于操作这些表的函数是set/get -
`:path_to_file/filename set tablename
让我们举一个例子来说明它是如何工作的 -
q)tables `.
`s#`t`tab`tab1
q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test
在Windows环境中,平面文件保存在位置 - C:\q\w32
从磁盘(历史数据库)获取平面文件并使用get命令,如下所示 -
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
创建一个新表tab2 ,其内容存储在tab1_test文件中。
播放表格
如果表中的列太多,那么我们以splayed格式存储这些表,即我们将它们保存在目录中的磁盘上。 在目录内,每个列都保存在一个单独的文件中,名称与列名相同。 每列都保存为kdb +二进制文件中相应类型的列表。
当我们必须频繁访问其多列中的几列时,以splayed格式保存表非常有用。 一个splayed表目录包含.d二进制文件,其中包含列的顺序。
与平面文件非常相似,可以使用set命令将表保存为splayed。 要将表保存为splayed,文件路径应以反向结束 -
`:path_to_filename/filename/ set tablename
对于读取展开的表,我们可以使用get函数 -
tablename: get `:path_to_file/filename
Note - 对于要保存为展开的表,应该取消键控和枚举。
在Windows环境中,您的文件结构将如下所示 -
分区表
分区表提供了一种管理包含大量数据的大型表的有效方法。 分区表是分布在更多分区(目录)上的splayed表。
在每个分区内,一个表将拥有自己的目录,其中包含一个splayed表的结构。 这些表可以按日/月/年分开,以便提供对其内容的优化访问。
要获取分区表的内容,请使用以下代码块 -
q)get `:c:/q/data/2000.01.13 // <b>“get”</b> 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 ….
让我们试着获取交易表的内容 -
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 - 分区模式适用于每天有数百万条记录的表(即时间序列数据)
Sym文件
sym文件是一个kdb +二进制文件,包含所有splayed和分区表中的符号列表。 它可以阅读,
get `:sym
par.txt file (optional)
这是一个配置文件,在分区分布在多个目录/磁盘驱动器上时使用,并包含磁盘分区的路径。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论