MongoDB一对多模式的三种设计方案

今天读了篇文章,关于mongodb里,一对多模式下的schema设计方案,感觉说的挺清晰,所以分享一下。原链接:

https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1

问题:

数据库设计中,数据之间的引用不可避免,其中常见的模式就是一对多。举个例子:

Person和Addresses

Person是一个对象,地址是一个对象,一个Person可以有若干个地址。

方案:

原文作者提到了三种设计方案,以及设计原则:

1,One-to-Few(一对有限数量的多)

例如上例中的Person和Address,一个Person基本只有少数量的居住地址,并且在很大程度上,没有单独读取Address对象的需求(也就是说是否有必要单独建立一个adress的表格),这种情况下采用嵌入式模式(embedding):


2,One-to-Many(一对千量级的多)

例如Product(产品)和Part(配件),一个产品,例如汽车,可以有数百个配件,而且配件通用性,也导致有需求单独对于配件进行查询,所以考虑到数量和应用,这种情况下适合采用child reference(在Product中添加引用数组)

Part:

Product:

3,One-to-Squillions(一对无数)

例如分布式系统的日志,每个机器(Host)会产生大量的日志记录(record),这种情况不适合child reference,也就是说,引用数组的长度无法控制,很可能越界,所以这种情况下适合采用parent reference(在每条record中,添加一个反向引用,指向Host)

Host

Record


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章