假设我有以下架构(我已经剥离了属性以使问题更容易解释):
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"required": true
},
"title": {
"type": "string",
"minLength": 6,
"maxLength": 128,
"required": true
},
"body": {
"type": "string",
"minLength": 6,
"maxLength": 128,
"required": true
},
"author": {
"$ref": "schema/user.json#",
"required": true
}
}
}
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"required": true
},
"username": {
"type": "string",
"required": true
},
"handle": {
"type": "string",
"required": true
}
}
}
似乎我在MongoDB集合中存储的唯一选择是存储完整版本的博客,包括用户的完整表示,或使用Mongo的参考能力包括参考。
完整表示的优点是我可以在一个查询中获得我想要的所有内容,但似乎有可能存在您希望包含在模板中的不准确信息(IE用户'存储博客条目后更新了句柄。
参考方法的优点在于您拥有准确的数据,但是在“性能下降”的代价/劣势下,#34;由于额外查询的开销,我一直在阅读。
我在StackOverflow或Google搜索上的任何类似问题中似乎无法找到的具体问题是:
是否有人从他们已经完成的性能测试中获得了一组实际的数据,这些数据实际上表明参考的性能是最重要的?我知道我可以自己测试一下,但我认为不是浪费3-4个小时来构建代码的变体,如果有人已经有了可靠的数据,我会使用它。
引用的常见替代方法是在更新其他属性时不断更新包含其他属性的集合吗?具体来说,如果用户已更新,请查找具有用户属性的所有博客(以及包含用户的其他模型),获取具有已更新用户的文档,然后将其全部更新匹配更新的文件?
在API实施的情况下,是否有"标准"在什么级别的属性被考虑"可更新"。具体来说,如果某人PUT是博客(用于更新),但该博客的用户属性信息与用户集合中的信息不同,那么是否应该使用新信息更新用户集合(可能触发#2中的逻辑回到其他博客条目)?