MongoDB 中的规范化
Normalization in MongoDB
我有一个结构如下的文档
项目:
objectID
itemDesc
categoryID
categoryName
subCategoryID
subCategoryName,
price
flavor
itemDesc
...
虽然通常 MongoDB 不鼓励规范化,但我担心如果不规范化是否会出现数据完整性问题。
我预计此应用程序中有数十万条记录(可能数百万条)。
这个模式是更好的选择吗?
类别:
categoryID
categoryName
子类别:
subCategoryID
subCategoryName,
项目:
objectID
itemDesc
categoryID
subCategoryID
price
flavor
itemDesc
这完全取决于最终用户将如何与您的应用程序交互。
根据您到目前为止的评论,我了解到您的查询很可能属于以下类别之一:
- 带来类别 X 中的所有项目
- 带来子类别 X 中的所有项目
- 带来属于 X 类别和 Y 子类别的所有项目
如果是这样,我认为最好只使用一个集合来存储数据,因为您的结构没有那么复杂,也没有复杂的多对多关系。
如官方 MongoDB Data Model Design 文档所述:
In general, use normalized data models:
when embedding would result in duplication of data but would not
provide sufficient read performance advantages to outweigh the
implications of the duplication.
to represent more complex many-to-many relationships.
to model large hierarchical data sets.
关于性能,我认为最好创建适合您的查询模式的索引并从一个集合中获取数据,而不是必须查询多个集合。
我有一个结构如下的文档
项目:
objectID
itemDesc
categoryID
categoryName
subCategoryID
subCategoryName,
price
flavor
itemDesc
...
虽然通常 MongoDB 不鼓励规范化,但我担心如果不规范化是否会出现数据完整性问题。 我预计此应用程序中有数十万条记录(可能数百万条)。
这个模式是更好的选择吗?
类别:
categoryID
categoryName
子类别:
subCategoryID
subCategoryName,
项目:
objectID
itemDesc
categoryID
subCategoryID
price
flavor
itemDesc
这完全取决于最终用户将如何与您的应用程序交互。
根据您到目前为止的评论,我了解到您的查询很可能属于以下类别之一:
- 带来类别 X 中的所有项目
- 带来子类别 X 中的所有项目
- 带来属于 X 类别和 Y 子类别的所有项目
如果是这样,我认为最好只使用一个集合来存储数据,因为您的结构没有那么复杂,也没有复杂的多对多关系。
如官方 MongoDB Data Model Design 文档所述:
In general, use normalized data models:
when embedding would result in duplication of data but would not provide sufficient read performance advantages to outweigh the implications of the duplication.
to represent more complex many-to-many relationships.
to model large hierarchical data sets.
关于性能,我认为最好创建适合您的查询模式的索引并从一个集合中获取数据,而不是必须查询多个集合。