有,而且非常常见。就不谈分库分表这种“极端”情况了 ———— 分库分表肯定是没有了的。即便是不分库分表,为了便于日后扩展,也往往不用了。注意这里并不是真的就不用外键了,而是禁止的“物理外键”,即依赖数据库本身提供的外键特性实现的。但从业务逻辑上讲其实还是有外键的。一致性靠业务层实现,而非交给数据库。比如常见的一种场景是“主表数据删除了、关联数据表里相应的记录也要删除”,靠物理外键很好解决,设置个级联删除咯;靠业务层实现就是自己分别到各个表里执行删除操作了。同样的,外键约束、级联更新等操作也是如此。P.S. 很多场景下有“最终一致性”就足够了,不要求一定要有“强一致性”。
有,而且非常常见。
就不谈分库分表这种“极端”情况了 ———— 分库分表肯定是没有了的。即便是不分库分表,为了便于日后扩展,也往往不用了。
注意这里并不是真的就不用外键了,而是禁止的“物理外键”,即依赖数据库本身提供的外键特性实现的。但从业务逻辑上讲其实还是有外键的。
一致性靠业务层实现,而非交给数据库。
比如常见的一种场景是“主表数据删除了、关联数据表里相应的记录也要删除”,靠物理外键很好解决,设置个级联删除咯;靠业务层实现就是自己分别到各个表里执行删除操作了。同样的,外键约束、级联更新等操作也是如此。
P.S. 很多场景下有“最终一致性”就足够了,不要求一定要有“强一致性”。