Cassandra - 更新并选择大于的字段

时间:2016-04-26 06:59:19

标签: java cassandra cassandra-2.0 bigdata nosql

我是cassandra的新手。我需要更新表格中的字段,并通过过滤该字段来选择该表格中的数据> (大于)条件。我如何创建一个表来支持它。任何人都可以帮我吗?

例如:

CREATE TABLE test (
   id uuid,
   title text,
   start_date timeuuid,   
   PRIMARY KEY (id, start_date)
)

在上表中,我希望能够执行以下查询,

update test set start_date = 04940b5e-00a2-11e6-afcd-063929a48e12 WHERE id = 04940b5e-00a2-11e6-afcd-063929a48e11;

select * from test where start_date > 04940b5e-00a2-11e6-afcd-063929a48e11 ALLOW FILTERING;

但是在上面的查询中它只支持第二个。 (即)>

如果我从群集密钥中删除start_date,那么它将支持更新查询,而不是>查询。

但我希望这两个查询都能执行。请任何人指导我这一点,以使其工作。

1 个答案:

答案 0 :(得分:2)

如果你想这样做,你有两个解决方案:

  • 将set(id,start_date)设置为主键。你不能在这里执行第一个 查询,因为它像插入一个新数据:你把一个新的主要 键。但是您可以删除要更新的行,然后插入另一行 一个

  • 使用两个模式创建两个表,允许您执行 这两个请求。如果您想要事务性插入,则可以使用 批次(见这里: https://docs.datastax.com/en/cql/3.3/cql/cql_reference/batch_r.html)。 您将确保将插入两个数据。

但是,请使用“允许过滤”#39;这不是一个好主意:它的表现非常糟糕。只有在没有其他选择的情况下才能使用它,因为很少有不需要表演的请求。