在MongoDB中,将相似的结构存储在一个集合中,还是分别存储在多个集合中,哪种方式更好?是否拥有一个/几个集合会带来任何好处?
例如,我需要存储一些日志,以进行进一步的分析。每个结构都有一个共同的部分和一些特定于某些状态类型的数据,如:
{
timestamp: ...,
client: { ... },
type: 'stats_for_item1',
data: {
id: ObjectId('xxx'),
field1: 1,
field2: 2
}
},
{
timestamp: ...,
client: { ... },
type: 'stats_for_item2',
data: {
id: ObjectId('zzz'),
field3: 3,
field4: {
field5: [5, 1]
}
}
}
你可以看到我们有一个共同的部分,以及一个
data
字段,对于item1
和item2
,还有一些不同的字段。似乎只有timestamp
和type
字段将被索引(当然还有_id)。这样的项类型数量有限,例如总共3种。会有大量写入操作和少量读取操作。那么我的问题是,如何组织这样的结构?使用一个大的集合
stats
并将所有内容存储在其中?还是创建几个集合stats_item1
、stats_item2
和stats_item3
?哪种方式更优?从mongo的角度来看,对于分片/索引/查询/锁定等方面有什么好处?