当客户端的数据太大时,在不可靠的客户端和服务器之间同步数据结构

| 摘要: 如何与无法将所有数据保存在内存中并保持断开连接的客户端同步大量数据? 说明: 我有一个实时(ajax / comet)应用程序,它将在网络上显示一些数据。 我喜欢将其视为Web上的视图和服务器上的模型。 假设我在服务器上有大量记录,所有记录都一直被添加/删除/修改。这里是问题: -这是网络,客户端可能有许多连接/断开连接。当客户端断开连接时,数据可能已被修改,并且重新连接时需要更新客户端。但是,由于每次连接都会很大,因此无法在每次重新连接时都向客户端发送所有数据。 -由于存在大量数据,因此显然无法将所有数据发送给客户端。想想拥有成千上万条消息的gmail帐户或具有...整个世界的google map! 我意识到,最初会将一些相关数据子集的完整快照发送给客户端,然后仅进行增量更新。这很可能是通过某种序列号完成的……客户端将说“我收到的最后一次更新是#234”,客户端将发送在#234和#current之间的所有消息。 我还意识到,客户端视图将通知服务器它正在“显示”记录100-200,“因此,仅向我发送这些记录”(可能是0-300,无论采用何种策略)。 但是,我讨厌自己编写所有代码的想法。有一个足够普遍和足够普遍的问题,必须已经有库(或至少逐步的食谱)。 我正在寻找在Java或node.js中执行此操作。如果有其他语言的解决方案,我会愿意切换。     
已邀请:
尝试发布/订阅解决方案。在给定的开始时间为客户端订阅服务器事件。 服务器根据所有数据更改事件的发生时间记录它们。 在给定客户端的重新连接时间之后,客户端会要求提供自上次同步以来所有已更改数据行的列表。 您可以将所有逻辑保留在服务器上,仅同步更改。会导致服务器上出现典型的“” select * from table where id in(从change_rows中选择id,change_date>给定日期的id)\“语句,可以对其进行优化。     

要回复问题请先登录注册