如何在请求之间持久化MongoDB游标


How to persist a MongoDB cursor in between requests?

web服务器竞赛:

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

(我正在使用持久会话)

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

1)第一个后端系统是您的数据库,通过查询访问从流(是某人的twitter feed或他们的fb feed)获得结果的页面。当你的页面底部或点击"更多结果",它会增加页面变量和查询针对该页面的API当前流。

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

系统是这样设计的,因为要进行大规模扩展,您不能依赖于数据库的实时更新。这是大批量生产的。因此,你通过架构的快速部分运行数据的一个非常小的子集,理解用户从"快速"后端获得数据的方式可能与最终在"慢速"后端看起来不完全一样,但它已经足够接近了。

所以…故事的寓意:

您不希望持久化db游标。你需要思考1)我是否需要实时更新2)如果需要,我该如何构建我的系统,以便第一次调用获得我的大部分数据,第二次调用/机制可以使其保持最新。