如果我有3个表,如表1,表2,表3具有一对多关系,表1具有40000记录,表2具有400000,表3具有4000000记录。 表2通过id列与表1相关 表3通过id列
与表1相关以更加规范化的方式将文档保存在mongo db中是否更好,即
Table 1
{
_id: "joe",
name: "Joe Bookreader"
}
Table 2
{
table1_id: "joe",
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
}
或者应该以非规范化的方式提供更好的性能,例如
{
_id: "joe",
name: "Joe Bookreader",
address: {
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: "12345"
}
}
答案 0 :(得分:0)
性能实际上取决于您打算如何使用/查询数据。但mongo不是一个关系数据库,所以你不应该这么想。一般而言,最好将所有相关数据保存在一个文档中。
话虽如此,表1只是一个名字并没有多大意义。我会将addressese与名称一起存储。
答案 1 :(得分:0)
MongoDB是一个对象存储,因此基于对象的表示形式通常比规范化表示形式要好。
这里有两个注意事项:
访问模式确定存储模式。如果一个人及其地址始终一起访问,则最好将它们存储在一起。
1:1或1:N关系。 M:N关系应存储在“规范化”对象中。在您的示例中,M:N表示一个地址属于多个人,而一个人具有多个地址。请记住,这不是MongoDB设计的数据结构类型,因此有点反模式。