我在SQL Server数据库中有几个表,正在向Cassandra进行艰苦的过渡。
Cassandra的概念和极端的非规范化我认为是一个好主意,值得付出代价。我几乎每一个data modelling exercise我都能找到Cassandra,并认为我对这个概念非常坚定。 This one was very helpful
我遇到的主要问题是如何保持所有内容同步的概念。 例如,如果我有下表,那么更新所有内容似乎是一件非常痛苦的事情。老实说,尝试跟踪一切都是一场噩梦。我相信在某处只会尖叫以引起注意的孤立数据。
TableA, TableAByX, TableAByY, TableAByZ
TableX, TableXByY, TableXByZ.
如果我更新TableA,我当然必须更新ByX,ByY和ByZ表。 然而,在极端情况下,如果所有表格都有像用户名字这样常见的东西,这些表格已更新,我怎样才能轻松准确地确保所有内容都更新?
用户名可以在20个表中,所有表都有各种分区键。 我需要做几次读取才能获得分区键来更新表格。
是否有任何系统或设计模式可以使这更容易?
答案 0 :(得分:3)
你的作家流程将照顾到这一点。最有可能的是,您最初想要写一个像Kafka这样的持久性日志(以便您可以快速确认对用户的更改),之后订阅更新的各种消费者将修复相关视图。
模式名称为CQRS。
如果出于某种原因,您将为用户提供多个分区密钥,那么您仍然需要某种方式来计算/检索来自其用户密钥的密钥(如果保持这些多个表同步,则对你很重要。)
-
与您的问题无关但您会发现另一个问题是,随着数据库的增长,架构迁移变得棘手 - 您可以迁移某些行/其他行不是这样,让版本化和应用程序代码变得很酷了解如何处理多个版本的架构。
此外,为了让这些表现良好,您可能希望使用Hadoop或某种方式来运行分布式查询/更新。