【发布时间】:2017-04-19 17:35:58
【问题描述】:
我现在正在学习 Cassandra,我知道我应该为每个查询制作一个表格。我不确定何时应该制作单独的表格或物化视图。例如,我对用户和帖子有以下查询:
users_by_id
users_by_email
users_by_session_key
posts_by_id
posts_by_category
posts_by_user
我应该总是使用物化视图吗?
在我看来,如果您想在查询中保持帖子或用户的一致性,那么我必须使用物化视图。但是,我阅读的物化视图有read before write 延迟。
另一方面,如果我使用不同的表格,我是否应该在每次创建新帖子时进行 3 次插入?我注意到我收到错误batch with conditions cannot span multiple tables,这意味着我必须一次将一个插入到每个单独的表中,如果其中一个查询失败,这可能会导致一致性问题。 (批处理语句,如果其中一个失败,则所有 3 个都失败)。
所以,既然保持一致性是有意义的,那么在我看来,我总是想使用物化视图,并且不得不接受read before write 的惩罚。
我想我的另一个问题是什么时候数据可以不一致?
因此,希望有人可以为我提供更清晰的说明,了解如何在 cassandra 中处理用户或帖子等“理论模型”上的多个查询。我应该使用物化视图吗?如果我为每个模型使用 3 个不同的表,我如何保持它们的一致性?只是希望所有 3 次插入都不会失败?好像不太对。
【问题讨论】:
标签: cassandra