在cassandra

时间:2015-09-15 11:06:25

标签: cassandra

假设我有用户分布在这些表中:

user_notifications (
  user_name 
  user_url
  notification_text
  notification_date
 PRIMARY KEY(user_name, notification_date)
)

user_profiles (
  user_name PRIMARY KEY
  user_url
  birth_date
  ..etc
)

现在,当用户更新他们的信息时,这应该如何工作?更新两个表?如果我的架构增长并且有10多个表,如何跟踪存储冗余用户信息的位置?那有什么模式吗?我可以想到所有这些语句都存在的存储库模式,但我不确定这是否可行。

1 个答案:

答案 0 :(得分:2)

使用Batch Statements。批处理语句将减少网络往返并确保原子性。

示例:

BEGIN BATCH
  INSERT INTO purchases (user, balance) VALUES ('user1', -8) USING TIMESTAMP 19998889022757000;
  INSERT INTO purchases (user, expense_id, amount, description, paid)
    VALUES ('user1', 1, 8, 'burrito', false);
APPLY BATCH;