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

Ajax 当数据对于客户端来说太大时,在不可靠的客户端和服务器之间同步数据结构,ajax,design-patterns,client-server,comet,data-synchronization,Ajax,Design Patterns,Client Server,Comet,Data Synchronization,总结: 如何将大量数据与无法在内存中保存所有数据且不断断开连接的客户端同步 说明: 我有一个实时ajax/comet应用程序,它将在web上显示一些数据。 我喜欢将其视为web上的视图和服务器上的模型 假设服务器上有大量记录,所有记录都在不断添加/删除/修改。以下是问题: -由于是web,客户端可能有许多连接/断开连接。客户端断开连接时,数据可能已被修改,重新连接时需要更新客户端。但是,由于数据太大,无法在每次重新连接时向客户端发送所有数据 -由于数据太多,客户端显然无法发送所有数据。想想一个有

总结:

如何将大量数据与无法在内存中保存所有数据且不断断开连接的客户端同步

说明:

我有一个实时ajax/comet应用程序,它将在web上显示一些数据。 我喜欢将其视为web上的视图和服务器上的模型

假设服务器上有大量记录,所有记录都在不断添加/删除/修改。以下是问题:

-由于是web,客户端可能有许多连接/断开连接。客户端断开连接时,数据可能已被修改,重新连接时需要更新客户端。但是,由于数据太大,无法在每次重新连接时向客户端发送所有数据

-由于数据太多,客户端显然无法发送所有数据。想想一个有数千条信息的gmail帐户,或者一个有。。。全世界

我意识到,最初,一些相关数据子集的完整快照将发送给客户机,此后只会进行增量更新。这可能是通过某种序列号来完成的……客户端会说我收到的最后一次更新是234,客户端会发送234和当前之间的所有消息

我还意识到,客户机视图将通知服务器它正在“显示”记录100-200,因此无论采用何种策略,只向我发送那些记录(可能是0-300)

然而,我讨厌自己编写这一切的想法。有一个非常普遍和普遍的问题,那就是必须有库或者至少已经有了一步一步的食谱


我希望在Java或node.js中实现这一点。如果有其他语言的解决方案,我愿意切换。

尝试发布/订阅解决方案。在给定的开始时间向客户端订阅服务器事件。 服务器根据发生的时间记录所有数据更改事件。 在给定的tim eor重新连接客户端后,客户端要求提供自上次同步以来所有更改的数据行的列表。
您可以在服务器上保留所有逻辑,只需同步更改即可。将产生一个典型的select*from表,其中select id from changed_rows where change_date>服务器上的给定_date语句中的id,可以对其进行优化。

您指定的所有比较都不需要客户端的完整数据集,因此他们甚至不尝试。您的应用程序在任何给定时间都需要完整的数据集,这有什么要求吗?如果没有,为什么还要麻烦呢?只要在请求时发送相关的已查看数据。@Joe,我想我是在考虑DWR库[它确实有一种同步数据结构的方法,但据我所知,没有一种方法将其链接到视图。@Joe,我也知道有一些尝试允许对backbone.js模型进行透明同步。同样,它们解决了一个非常重要的问题,但如果数据太大,客户端无法处理,则解决方案不起作用。我很抱歉正在寻找一种解决方案,该解决方案结合了data syn+关于实际需要同步的数据子集的知识