cassandra的更新

时间:2016-05-16 15:48:56

标签: cassandra cassandra-2.0 cassandra-2.1

Cassandra数据建模尊重"数据的非规范化和重复是Cassandra"生活中的事实。但是,对于非正规化数据的缺点之一是使更新变得非常困难。例如,如果我有三个表来满足不同的查询,那么选择就可以了。但是,如果在我的应用程序中,我想更新用户名,我需要更新这三个表?第一个表上的更新看起来不错。后两者怎么样?升起的费用会非常昂贵吗?我该如何处理这个案子?

CREATE TABLE users_by_username (
    username text PRIMARY KEY,
    email text,
    age int
)

CREATE TABLE users_by_email (
    email text PRIMARY KEY,
    username text,
    age int
)

CREATE TABLE groups (
    groupname text,
    username text,
    email text,
    age int,
    hash_prefix int,
    PRIMARY KEY ((groupname, hash_prefix), username)
)

2 个答案:

答案 0 :(得分:1)

这是我在人们试图将关系模型放入Cassandra时遇到的一个典型问题。 Cassandra是一个很棒的数据库,它的功能可以带来奇迹。有许多功能可以支持各种不同的数据模型,您几乎可以涵盖所有用例。当你查看你的用例时,问题是为什么你会使用Cassandra作为关系模型? 如果你真的想让Cassandra覆盖你的用例,你将不得不在应用程序级别上执行许多不同的操作,只是为了执行更新并使数据保持一致状态。

答案 1 :(得分:0)

在观看了几个youtube剪辑后,看起来Canssandra的更新是一个简单的写入,可以将记录附加到文件系统中的提交日志中。然后将数据放入cassandra服务器中记忆,并立即向客户端发送确认。所以更新调用结束。这使得客户端的更新速度更快。

之后会发生整个压缩过程,包括基于时间戳的刷新,顺序写入和合并。