php - 如何在请求之间保留 MongoDB 游标?

标签 php ruby-on-rails node.js mongodb web-applications

在网络服务器的竞争中:

为了避免重新查询(使用find),可以尝试在请求之间保留find 返回的游标引用。 Cursor 对象是一个复杂的对象,用于存储例如套接字连接。如何存储这样的对象以避免在后续的网络请求中重新查询?我在 Node.js 工作,但任何建议都是有帮助的(无论是哪种语言:rails、C#、Java、PHP)。

(我正在使用持久 session )

最佳答案

Facebook 和 Twitter 的流功能比对数据库的简单查询更复杂。像这样的系统往往在其架构中有两个主要的后端组件,为您提供数据:慢速和快速。

1) 第一个后端系统是您的数据库,通过查询访问以从流中获取一页结果(是某人的推特提要或他们的 fb 提要)。当您翻到底部或单击“更多结果”时,它只会增加页面变量并针对当前流的该页面的 API 进行查询。

2) 第二个是一个完全独立的系统,它通过 websockets 或针对 API 调用的分页向您的页面发送实时更新。这是您架构中“快速”的部分。这可能不是来自数据库,而是某处的队列。从这个队列中,处理程序将您的数据发送到您的页面,这是一个订阅者。

系统是这样设计的,因为要实现巨大的扩展,您不能依赖实时更新数据库。它是大批量完成的。因此,您通过架构的快速部分运行该数据的一个非常小的子集,了解用户从“快速”后端获取数据的方式可能与最终在“慢速”后端中的显示方式不完全相同,但是已经足够接近了。

所以...故事的寓意:

您不想保留您的数据库游标。您想考虑 1) 我是否需要实时更新 2) 如果需要,我该如何构建我的系统,以便第一次调用获取我的大部分数据,第二次调用/机制可以使它保持最新。

关于php - 如何在请求之间保留 MongoDB 游标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009516/

相关文章:

node.js - 如何在 Node.Js 中播放 wav 文件?

node.js - 如何用 `tsc` 和 `npm install` 解决鸡/蛋情况?

javascript - 使用 PHP 和 AJAX 插入 mysql 不起作用

php - 给定 Y 数字,得到 X 数字的每种组合?

php - Spreadsheet_Excel_Writer 数据输出损坏

ruby-on-rails - 如何编写一个 RSpec Controller 宏,它可以接受由 let 或在 before block 中定义的参数?

ruby-on-rails - 存储在 Amazon S3 上的视频 (.mp4) 开始下载而不是在视频播放器中播放

ruby-on-rails - 如何在带有rails 4版本的mongodb中使用 "devise"gem?

php - PHP比较和填充不同长度的数组

node.js - 如何在 Node 上使用pouchdb-authentication?