最佳Riak存储策略

时间:2013-09-11 13:20:16

标签: database json nosql sensor riak

我打算使用Riak存储一些传感器数据,但传感器连接到不同的用户。我的计划是建立一个这样的结构: Bucket =用户ID key = time,每分钟新密钥(或者可能是两分钟)

当我每分钟说一个新密钥时,读数并不总是连续的,不是实时的,但它们会在以后上传。它们记录在一天的某些时段。计量频率非常高,每秒250个样本。如果我为每次测量制作一个新密钥,我会非常快速地获得密钥爆炸,我认为它不会对性能产生好处。除此之外,我真的不需要知道每个给定时刻的精确数字,我会在一段时间内更加顺序地使用它们(从分钟N到分钟M的值)。

所以我想把每分钟的结果“分组”,并将它们存储为一些JSON。

这种策略看起来可行吗?

另外,我正在考虑使用LevelDB作为存储引擎,只是为了安全起见,就RAM使用情况而言。

1 个答案:

答案 0 :(得分:2)

较低的按键数似乎对我来说更好,然后键入每个事件。你以后如何使用这些数据?

如果数据用于进一步分析,leveldb和二级索引允许您在mapreduce作业中选择特定时期的数据(如果您的密钥以某种方式订购,例如日期时间)(可以在后台进行额外的工作) )。 另外,leveldb不会将所有密钥存储在内存中,如果您计划永久存储所有数据,这对于不断增长的数据集也是有益的。

如果您的应用程序依赖于可预测的延迟并且每个查询需要固定数据量最好将数据分组,例如应用程序需要(在一个对象中对所有密钥进行10分钟的采样)。

另一个值得关注的是总对象大小,因为riak docs表示单个对象的大小最好不超过10mb。