我是Cassandra的新手。我没有得到如何更新Cassandra中与特定用户相关的特定列。
例如,我想更新用户列族中用户的位置。
答案 0 :(得分:1)
如果您遵循thrift API,则更新和插入之间没有区别。它是相同的API调用。
答案 1 :(得分:1)
在cassandra中插入/更新之间没有区别(正如Pranab所说)。
现在为您解决一个用户示例...我假设您每个用户都有一行,以及名称,电子邮件,位置等内容的列。
如果你做了两次插入
[伪代码]
insert('user-123', {'name': 'bob', 'email': 'bob@example.com'})
insert('user-123', {'location': 'nowheresville'}
[/伪代码]
你最终会得到一个如下所示的用户行:
row-key: 'user-123'
row-value: {'name': 'bob', 'email': 'bob@example.com',
'location': 'nowheresville'}
这应该回答你的问题,但另外还有cassandra中的行/列的另一个注释。由于行上没有锁定位置,因此您应该小心将这些数据分开。如果有两个人同时保存了'user-123',那么我认为可能会有一行是您想要的一半,而另一半是数据的其他插入者所希望的那样
因此,通常最好将所有用户的数据保存在单个单元格中(序列化)。
此数据的替代结构可能是:
row-key: 'nowheresville'
row-value: {'bob-123': serialized-bob-data}
serialized-bob-data: {'name': 'bob', 'email': 'bob@example.com'}