如何更新Cassandra中的列

时间:2010-11-25 09:20:15

标签: cassandra

我是Cassandra的新手。我没有得到如何更新Cassandra中与特定用户相关的特定列。

例如,我想更新用户列族中用户的位置。

2 个答案:

答案 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'}