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

标签 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,那么它将支持更新查询,而不是 > 查询。

但我希望这两个查询都能被执行。请任何人指导我,使其发挥作用。

最佳答案

如果您想这样做,您有两种解决方案:

  • 设置(id,start_date)为主键。你首先不能在这里表演 查询,因为这就像插入新数据:您放置一个新的主数据 key 。但您可以删除要更新的行,然后插入另一行 一个

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

但是,使用“允许过滤”并不是一个好主意:它的性能非常糟糕。仅当您别无选择时才使用它,对于少数不需要性能的请求。

关于java - Cassandra - 更新并选择大于的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36857491/

相关文章:

c# - 从 .NET 驱动程序连接到 Cassandra 2.0

Cassandra ArrayIndexOutOfBoundsException 异常

java - 从 android 将媒体上传到 S3 存储桶时出错

java - 如何保持套接字输出流打开并多次写入

Java 实体 - 存储日期

Cassandra 将 TTL 添加到现有条目

Java正在画2个盒子

mysql - 最适合数十亿索引的数据存储

java - Cassandra 驱动程序异常 "All host(s) tried for query failed"每隔几个小时发生一次,没有任何解释

database - 有没有办法在Golang中实现cassandra "decimal"数据类型