我有一个正在研究的项目,我想知道从性能的角度看待该架构的最佳方法是什么。
这就是我的数据的样子
{
"description": "this is a payment description",
"payment": {
"amount": 2000,
"type": "type1",
"gateway": "gateway1"
}
}
我想做的是能够计算由JSON中提供的任何键过滤的金额之和。
这些是我想到的模式。
SCHEMA 1
{
"description": "this is a payment description",
"payment": {
"amount": 2000,
"type": "type1",
"gateway": "gateway1"
}
}
SCHEMA 2
{
"description": "this is a payment description",
"payment_amount": 2000,
"payment_type": "type1",
"payment_gateway": "gateway1"
}
假设数据进入一百万条记录,当我展平JSON并将其另存为顶级属性时,性能(就检索时间而言)是否会变好,或者对象的嵌套程度如何都没有关系?
谢谢。
答案 0 :(得分:0)
从性能的角度来看,上面显示的两种模式设计都很好。
文档中过多的嵌套级别会在查询和更新文档时造成不必要的麻烦。因此,仅在需要嵌套的地方使用嵌套,否则实际上是有道理的,否则平面文档结构就可以了。
就性能而言,这两种模式设计之间的差异几乎不会引起注意,模式1会比模式2占用更多的空间。
答案 1 :(得分:0)
一种模式,因为Mongo是用于处理此类文档结构的。
如果您热衷于简单性,请使用模式2,因为它可以简化过滤,以防您要将每种记录转换为使用任何一种语言的某个类。(感谢史蒂夫)