我有一个cassandra数据库,其键空间名称为CS_DATA,列族名称为ScheduledData,其中包含一个带有cdata和行键的超级列“Div / 12345 / Plan 3”。这个超级列有2列,表示c1,c2表示一些值。每列即c1和c2具有值字段。 c1具有空白值,c2具有包含许多字段的值。
像这样的东西
value=<nodeId=123#time=12:34#location=bangalore>
如何在cassandra数据库中使用set命令更改这3个字段的值?
我在cassandra的客户端尝试了以下内容
设置CS_DATA.ScheduledData ['Div / 12345 / Plan 3'] ['cdata'] ['c2'] ='nodeId = 123'
这将我的c2值设置为nodeId 123,但我需要单独更改子字段并保留其他两个字段的时间和位置相同。我该怎么做?
答案 0 :(得分:0)
在您的设计中,您似乎有一些序列化数据,如时间和位置插入到C2字段中。那么Cassandra-Cli可见的最外层结构是c2。不幸的是,您必须读取存储在C2中的先前值,使用您的应用程序用于序列化该字段的相同算法对其进行反序列化,然后再将其插入C2中。
你的设计促进了在写之前进行阅读,遗憾的是这并不是很好。考虑使用这样的列名,以便您可以单独更改它们:
c2_field1,c3_field_2,...