我试图以以下方式在cassandra中存储和检索数据:
存储数据:I以下列方式创建了表:
CREATE TABLE mydata (
myKey TEXT,
datetime TIMESTAMP,
value TEXT,
PRIMARY KEY (myKey,datetime)
);在过去的五年里,我每分钟都要保存一个价值。因此,它存储1440 * 365 *5=每行2628000条记录/列(myKey作为行键)。
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:01:00','72F');
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:02:00','72F');
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:03:00','72F');.
我能存储数据,一切都很好。但是,我想知道,这是否是水平执行(存储)数据的有效方法(100万个这样的键的每个键的值为2628000)?
检索数据:
在以上述格式存储数据之后,我可以使用简单的select查询来选择数据。例如:
SELECT *
FROM mydata
WHERE myKey='1234ABCD' AND datetime > '2013-04-03 07:01:00' AND datetime < '2013-04-03 07:04:00';查询工作正常,我得到了预期的结果。
不过,我的问题是:
感谢你的其他建议。
发布于 2016-05-05 07:08:26
您肯定需要使用时间戳的模块化版本绑定分区。但是粒度实际上取决于您的读取。
如果你主要是每天阅读,那么使用类似PK的东西((myKey,yyyymmdd),时间)
如果主要按周PK((mykey,yyyyww),时间)或月份.
问题是,如果您想要读取一整年的值,那么最好每周或每个月都有一个分区,甚至是年份,我认为如果您不做任何删除,您的分区大小需要小于100 be。
https://stackoverflow.com/questions/37024875
复制相似问题