如何使用更新查询更新cassandra中的集群密钥?

时间:2014-11-22 08:43:12

标签: cassandra key cql nosql

这是我的表结构,我使用以下查询更新序列:

Update styles set sequence=1 where styleid = 'CLASSIC';

我收到错误消息

PRIMARY KEY part sequence found in SET part
Missing PRIMARY KEY part sequence

CREATE TABLE styles (
  styleid ascii,
  sequence int,
  active boolean,
  image ascii,
  name ascii,
  PRIMARY KEY (styleid, sequence)
) WITH CLUSTERING ORDER BY (sequence DESC);

请任何人帮我更新群集密钥序列,以便更新。或者任何替代方法请分享。

2 个答案:

答案 0 :(得分:1)

根据Cassandra如何存储数据,无法更新群集列(主键)。

Rowkey,它是**styleid** ->[sequence] -> [active boolean,image ascii, name ascii]

的组合

为了指向非主要列进行更新/删除,需要通过styleid -> sequence分区来解析列。

创建的主键无法更改,因为它表示数据在Cassandra中的存储方式。因此,无法在此处更新“序列”。

答案 1 :(得分:-1)

虽然是,但是在Cassandra中无法直接更新群集列,就像所有事情一样,有很多方法可以做你需要做的事情。

您需要创建一个临时表,以您希望的方式表示数据。然后,您将需要删除旧表,然后基于临时表创建一个新表。

我建议: 1)备份你的初始表,因为有机会是你第一次尝试这个,你会错过一些东西。 2)编写程序来进行所需的更改(Javascript程序,Java,无论你喜欢什么)。 3)测试,测试,然后再次测试(首先在本地进行测试,然后升级到集成式环境,最后测试某种预生产环境,这种环境尽可能接近生产环境。< / p>