【问题标题】:exposing database read operations as webservice将数据库读取操作公开为 Web 服务
【发布时间】:2016-07-31 20:50:12
【问题描述】:
我正在为数据库服务(mongodb、django)编写一个 REST API。我的问题是如何通过 API 处理读取操作?一个简单的解决方案是在每个 api 调用上使用跳过和限制参数查询数据库,这样我就可以查询数据库并返回结果。但是对每个 api 调用(分页)进行查询会不会效率低下?或者我应该在后端第一次调用时查询一次并存储 cursor_id 并用于为后续的 api 调用获取数据?
谢谢。
【问题讨论】:
标签:
mongodb
web-services
rest
【解决方案1】:
使用您的简单解决方案:只需向数据库查询适当的页码。使用提供的skip() 和limit() 方法,或者如果您非常关心效率,请在this thread there is a work around avoiding skip() function 中使用
一般来说,我不建议在内存中加载整个数据库集合/表(也不是 mongo,而是任何数据库)。
这可以处理一个很小的数据集,但是,如果你的集合包含大约 20 万个文档怎么办?你要把它们放在一个变量中吗?你会浪费 CPU 内存复制你的数据库。
此外,您会发现数据库中加载的数据与内存中的数据之间存在不一致数据。
最后,您的 API 将搜索页码 2000 多少次?通常你会寻找第一个结果页面。