多年来我一直在做关系数据库的事情,但最近已经进入 Cassandra/Redis 领域。NoSQL 对于我们正在做的事情是有意义的,所以这很好。
今天在定义 Cassandra 列族时,我想到了一个问题:在关系数据库中,为什么 DDL 不让我们以数据库引擎本身可以本地管理由此产生的一致性问题的方式定义非规范化规则。换句话说,当关系数据库程序员通过非规范化来实现性能目标时……为什么他/她要通过专门编写的 SQL 来保持一致性?
也许我缺少一些明显的东西?这样的建议是否有一些愚蠢的原因,因为在我看来,拥有这种能力可能非常有用。
编辑:
感谢到目前为止的反馈。我仍然觉得我手上有一个悬而未决的问题(也许是因为它表达得不好)。我了解物化视图试图为非规范化数据提供引擎管理的一致性。但是,我的理解是它们不会随着基础表的更改而立即更新。如果这是真的,这意味着引擎真的不是管理由非规范化引起的一致性问题......至少不是在写入时。我的意思是,当需要针对复杂的关系模型扩展具有繁重读取负载的系统时,没有真正的、功能丰富的、引擎管理的非规范化的规范化数据结构会阻碍关系数据库引擎。我认为调整物化视图刷新率确实等同于 Cassandra 等 NoSQL 引擎提供的可调“最终一致性”。我需要了解引擎如何有效地同步其物化视图。为了相对于 NoSQL 选项被认为是可行的,同步视图所需的时间需要随着添加/更新的行数线性增加。
无论如何,我会再考虑一下并重新编辑。希望有一些想象中的 DDL 的代表性例子。