首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从KDB HDB和KDB RDB查询时的差异

从KDB HDB和KDB RDB查询时的差异
EN

Stack Overflow用户
提问于 2014-12-18 12:37:58
回答 3查看 3.4K关注 0票数 1

我听说在查询(选择等)时有不同之处。来自HDB和RDB (内存中)数据库。当我们应该使用特定于HDB的查询和特定于RDB的查询时,是否可以描述所有可能的场景,以及如何进行查询:例如,对HDB的查询示例和对RDB的相同示例?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-18 20:30:23

从我的头顶上:

分区的HDB表将有一个“虚拟”日期列。

RDB表(通常)不会有“日期”列

对于Partitioed表(http://code.kx.com/q/ref/dotq/#qind-partitioned-index),虚拟"i“列的行为有所不同

HDB表(除非存储是扁平的/序列化的)不会立即被完全拉进内存中,数据会按需读取。

将枚举HDB表中的符号列,内存中的RDB表将未枚举。

我没有真正的例子可以给出,但你只需要记住这些在查询时

票数 3
EN

Stack Overflow用户

发布于 2014-12-19 08:54:14

如果您使用的是普通的rdb/hdb设置,那么下面是这样的场景:

  • 滴答机为x millis收集数据,并向听众提供泵。
  • rdb就是这样一个侦听器。它将保存从今天午夜到今晚午夜之前的数据。
  • 午夜发条发送.u.end消息
  • 这将调用rdb将内存中的表转储到2014.12.19/目录中的磁盘上。
  • 注意,rdb上的模式是time,sym,然后是其他列。在hdb上,这个切换到日期(虚拟),sym (p ),时间(在sym中排序)

所以您的where子句标准是:

  • 如果您需要查询今天的数据,那就是rdb
  • 今天之前的任何事情,都是hdb
  • 任何混合的,在您的hdb上创建从rdb中提取数据并连接的函数。

对于rdb最优的查询总是

代码语言:javascript
复制
select from table where time ...

因为rdb表是时间排序的。

对于hdb最优的查询总是

从表格中选择date=2014.12.24,sym=`AAPL,time .

因为它减少了对磁盘的查找(只需要检查2014.12.24目录中的数据),所以sym分开,然后在sym中排序时间(从技术上讲,很明显没有s属性)。将日期作为where子句的第一部分非常重要!:)

票数 5
EN

Stack Overflow用户

发布于 2016-04-14 13:30:08

到目前为止,我遇到了以下示例查询,这些查询在hdb中不起作用。

  1. 计数表名
  2. 从tablename中选择10
  3. delete/update/insert语句在重新启动hdb之前只具有临时效果

当我看到更多的信息时,我会更新这个列表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27546789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档