所以我有一个像这样的数据库结构(简化为相关项目
{
users: {
userId: {
relatedContracts: [list of contract ids]
}
},
contracts: {
contractId: {
...contractMetaData
}
}
}
现在说我想获取相关合同并将其显示在用户主页上。从用户对象中,我可以获得合同ID的列表。
我可以为每个合同编写一个单独的查询,如下所示:
database.ref("/contracts/").child(contratId1).once('value')
database.ref("/contracts/").child(contractId2).once('value')
但是无论如何都可以批量处理此请求。这样,我提供了ID列表,它返回了所有相关合同。
在像这样的文档驱动的数据库中处理关系的正确方法是什么。似乎对每个关系执行一个数据库请求会不会很好地扩展?
答案 0 :(得分:0)
这里没有可伸缩性问题。使用文档ID进行X文档提取总是会导致X节点查找,无论它们是否是批处理的。客户端库将请求通过管道传递到服务器,这和批处理一样好(并且还使您有机会在全部提取文档之前开始处理文档,而批处理是不允许的)。