我在MYSQL中有一个名为Price的表,如下所示:
+---------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+-------------------+-----------------------------+
| Current | float(20,3) | YES | | NULL | |
| Time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------+-------------+------+-----+-------------------+-----------------------------+
我的申请要求我总结并检索从最近一周到最后一周的2小时,最后一周的结果 . 我正在尝试迁移到Cassandra,并希望为我的数据 Build 一个合适的模型 . 目前我在Cassandra建了一个表,看起来像这样:
CREATE TABLE IF NOT EXISTS HAS.Price (
ID INT,
Current float,
Time timestamp,
Time_uuid timeuuid,
PRIMARY KEY (ID, Time_uuid)
);
这不合逻辑,因为它只创建了一个大表,我不认为这会将数据分发给其他节点 . 我在这里使用固定ID为1 . 我相信在我的情况下,选择的逻辑分区键是"hour"所以例如我可以汇总最后一小时,最后2小时的所有当前值,依此类推 . 在这种情况下,我指的是post . 如果我创建小时作为分区键,例如所有数据,让我们说当天的第15小时将进入此行
2015-08-06 15:00:00
并且下一个小时的数据将转到 2015-08-06 16:00:00
. 不过请假设当前时间是2015-08-06 16:12:43而我想从最后一小时选择记录我的查询会是什么样子,因为部分数据是在2015-08-06 15:00:00将有一个不同的主键
2 回答
请尝试以下选项 . (我的答案是正确的)
为您的查询设计 . 在这里,我可以看到除了最多分钟之外的可能查询
获取当天的总和
获取小时数
获取最后一小时的总和(小时的任何时间)
为每个交易制作2个插入,如下所示
哪里
天是YYYYMMDD
小时YYYYMMDDhhmmss(2015081317)
选择“查询”以获取任何时间的最后一小时:使用minTimeuuid和maxTimeuuid
注意:分区键上不允许范围查询,尽管文档说您可以使用令牌功能但结果不可预测 .
是的,这不会在您的节点之间分发数据 .
在这里我认为解决方案应该是什么
然后只需查找开始时间time_uuid和结束时间time_uuid并编写查询