我正在使用Azure Cosmos DB和MongoDB存储我的基于Microsoft Bot Framework的聊天机器人将给不同对话框的答案。
我的问题是,我不知道是否最好对每个响应进行查询,或者在代码运行后执行一个大型查询以获取数据库中的所有内容并将其存储在数组中。
Azure Cosmos DB pricing使用单位请求单位每秒(RU / s)。
在成本和速度方面,我正在考虑在运行bot服务时进行一次查询(就我而言,那就是在我的Azure Web App上运行app.js
时)。
此查询获取我的数据库中的所有数据,并将结果存储在我的代码中的不同数组中。在我的bot.dialog()
s中,我将使用这些数组来获取我不会将机器人返回给最终用户的答案。
我会在应用程序启动时将数据库中的所有数据加载到机器人中,如果您操作数据,则可以在机器人关闭时将其写回数据库。这意味着你在机器人生命的开头有一个大的查询,最后有另一个。但这也取决于您的应用分配的内存量以及数据库的大小
从Cosmos DB的角度来看,产生较大数据集的请求通常在RU方面比获取较小数据集的请求更快/更便宜。往返很贵。但它也取决于查询的复杂性 - 聚合管道比带有过滤器的find()更昂贵。其他一切都应该是客户端的考虑因素