在 Web 服务器的竞赛中:
为了避免重新查询(使用find
),可以尝试在请求之间保持由find
. 该Cursor
对象是一个复杂的对象,例如存储套接字连接。如何存储这样的对象以避免对后续 Web 请求进行重新查询?我在 Node.js 工作,但任何建议都是有帮助的(不管是什么语言:rails、C#、Java、PHP)。
(我正在使用持久会话)
在 Web 服务器的竞赛中:
为了避免重新查询(使用find
),可以尝试在请求之间保持由find
. 该Cursor
对象是一个复杂的对象,例如存储套接字连接。如何存储这样的对象以避免对后续 Web 请求进行重新查询?我在 Node.js 工作,但任何建议都是有帮助的(不管是什么语言:rails、C#、Java、PHP)。
(我正在使用持久会话)
Facebook 和 Twitter 的流功能比对数据库的简单查询更复杂。像这样的系统在其架构中往往有两个主要的后端组件,为您提供数据:慢速和快速。
1)第一个后端系统是您的数据库,通过查询访问以从流中获取结果页面(作为某人的 twitter 提要或他们的 fb 提要)。当您分页到底部或单击“更多结果”时,它只会增加页面变量并针对当前流的该页面的 API 进行查询。
2) 第二个是一个完全独立的系统,它通过 websockets 向您的页面发送实时更新或针对 API 调用进行分页。这是架构中“快速”的部分。这可能不是来自数据库,而是某处的队列。从这个队列中,处理程序将您的数据发送到您的页面,这是一个订阅者。
系统是这样设计的,因为要进行大规模扩展,您不能依赖实时更新数据库。它是大批量完成的。因此,您通过架构的快速部分运行该数据的一个非常小的子集,了解用户从“快速”后端获取数据的方式可能与最终在“慢速”后端的外观不完全相同,但是它足够近了。
所以......故事的寓意:
您不想保留您的 db 游标。您想 1) 我是否需要实时更新 2) 如果需要,我该如何构建我的系统,以便第一次调用可以获得我的大部分数据,而第二次调用/机制可以使其保持最新状态。