【MongoDB权威指南】六

六 应用程序设计

范式化与反范式化

所谓范式化$normalization$:把数据分散到多个不同的集合(表),不同集合(表)之间可以相互引用数据。但是这块被引用的数据只存在于一个集合之中,需要修改时只需要改一个文档就好。适合数据经常变动的情况,如果数据不经常变化,就没必要用范式化。

MongoDB并不存在join工具。

反范式化$denormalization$:每个集合都有一个文档副本。

基数

一个集合中包含的对其他集合的引用数量叫做基数。

模式迁移

有时候需求变动,需要加入新的字段或者删除旧有字段。为了避免兼容性问题,可以在每个文档中加入version字段。

当字段版本有变动的时候,也可以选择做个马杀鸡数据迁移。但是要注意MongoDB的多文档更新updateMany不是原子性的,一旦执行过程中发生崩溃,就有可能出现一些文档更新成功,一些文档尚未更新的情况。

不适合MongoDB的场景

  • 不支持事务
Buy Me A Coffee / 捐一杯咖啡的钱
分享这篇文章~
0%
//