【发布时间】:2016-02-06 01:15:47
【问题描述】:
我想为 Cassandra 中的查询设置第三维度标准。它已经允许高效的二维查询,因为它不仅是一个键值存储,而且实际上是一个键值存储。那就是:
简单的键值存储:
键-键-值存储:
所以 Cassandra 的吸引力在于,给定 keyA 的值,我可以沿 keyB 执行非常有效的范围查询,因为它们是连续存储的。
现在是否有可能在给定 keyA 和 keyB 的情况下也有一个沿第三维的索引,比如 keyC,以便我可以限制基于 keyC 返回的值?
所以本质上:
基本上给定 keyA,比如 keyA-1,以及一系列 KeyB,比如 keyB-2 到 keyB-4,我只想返回与 keyC-3 对应的值,如上图绿色所示。
我知道这是可能的,因为即使是简单的键值存储也可以使用多个索引来实现。问题是,它是否高效。我还能沿着 keyB 执行非常快速的范围查询吗?
我的用例是时间序列,我想在其中存储同一序列的分钟分辨率和每日分辨率数据。所以 keyA 是我想要的系列,keyB 是当天,keyC 是分钟。我想这样做是因为将所有内容存储为分钟意味着如果我需要每日数据,这意味着通过网络(每天 24 * 60 分钟,我只想要其中一个)获取太多数据到内存中,以及大量的客户端聚合。
我知道我可以将分钟和每天存储在单独的表中,但这会在一定程度上限制我的灵活性,更不用说架构的简洁性了。
如果这在 Cassandra 中并不容易/高效,那么这在 RIAK TS 中是否可行?
【问题讨论】:
-
太长无法阅读但是:您的集群可以是复合的,因此您可以执行 key-(key-...-key) - value。
标签: cassandra cassandra-2.0 riak