如何使用Cassandra进行建模

时间:2014-07-07 14:51:42

标签: cassandra

假设我有一行名为'version'的单元格,它保存行的当前版本。

此版本号对于很多行都是相同的。

在某些时候,我想找到版本不等于某个给定版本的所有行:给我所有行的版本!= 1.0,然后我返回版本为0.9,0.8,0.8.1的所有行, 0.7.1.2等等(在我的用例中,我只会搜索'较旧'版本)。

我想知道如何对此进行建模。

br,Svante

2 个答案:

答案 0 :(得分:0)

您可以将您的版本列作为主键的第二部分(id,version),然后您可以通过select * from where where id = x和version<来查询它。 '1.0';

答案 1 :(得分:0)

你无法在Cassandra实现这一目标。 根据具体情况,您可以在应用程序中创建变通方法和/或使用" IN"条款。我要做的是创建一个表格,其中包含每个版本的一组"以前的版本"。

 create table version_history (version float PRIMARY KEY , previous set<float>);

任何时候你需要获得&#34;所有行都带有X&#34;之前的版本,我查询version_history来检索集合,然后进行类似

的查询
select * from rowcontainer where version in (previous[1], previous[2] ... previous[n]));

这只是一个想法,你需要总是执行2次查询,但这肯定比扫描整个表更好。

HTH, 卡罗