在mongodb中保持json关系
如果我有3个表,比如表1、表2、表3,它们有一对多的关系,表1有40000条记录,表2有400000条记录,表3有4000000条记录。 表2通过id列与表1相关 表3按id列与表1相关 在mongo db中以更规范的方式保存文档是否更好在mongodb中保持json关系,mongodb,Mongodb,如果我有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: "Fake
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"
}
}
性能实际上取决于您打算如何使用/查询数据。但是mongo不是一个关系数据库,所以无论如何你不应该这样想。一般来说,最好将所有相关数据保存在一个文档中
话虽如此,只有一个名称的表1没有多大意义。我会将地址和名称一起存储。MongoDB是一个对象存储,因此基于对象的表示通常比规范化表示更好 这里有两个考虑因素:
第二个更好,是MongoDB方式。不要尝试像MongoDB那样使用SQL,你会遇到很多问题,如果给定的文档有1000个地址记录,这会很慢。性能还会更好吗?只要你查询索引字段,1000个就可以了,性能也会很好。只有当您的文档增长到16MB以上时,才会出现问题,然后您将被迫将其分块。否则最好将其保存在一个文档中。确保在要查询的字段上创建了正确的索引