Резюме:
Как мне синхронизировать очень большой объем данных с клиентом, который не может хранить все данные в памяти и постоянно отключается?
Пояснение:
У меня есть приложение в режиме реального времени (ajax / comet), которое будет отображать некоторые данные в Интернете.
Мне нравится думать об этом как о представлении в Интернете и модели на сервере.
Скажем, у меня есть большое количество записей на сервере, все они добавляются / удаляются / изменяются все время. Вот проблемы:
-Это Интернет, клиент, вероятно, имеет много подключений / отключений. Пока клиент отключен, данные могут быть изменены, и клиент должен будет обновляться при повторном подключении. Однако клиент не может отправлять ВСЕ данные каждый раз, когда происходит повторное подключение, так как данные очень велики.
-Так как данных так много, клиент, очевидно, не может отправить все это. Представьте себе учетную запись Gmail с тысячами сообщений или карту Google со ... всем миром!
Я понимаю, что первоначально полный снимок некоторого релевантного подмножества данных будет отправляться клиенту, а после этого только инкрементные обновления. Скорее всего, это будет сделано через какие-то порядковые номера ... клиент скажет "последнее полученное мной обновление # 234", и клиент будет отправлять все сообщения между # 234 и # текущим.
Я также понимаю, что представление клиента уведомит сервер о том, что оно «отображает» записи 100–200 «поэтому отправляйте только те» (возможно, 0–300, независимо от стратегии).
Однако я ненавижу идею кодировать все это самостоятельно. Существует достаточно общая и достаточно распространенная проблема, заключающаяся в том, что уже должны быть библиотеки (или, по крайней мере, пошаговые рецепты).
Я хочу сделать это либо на Java, либо на node.js. Если решения доступны на других языках, я буду готов переключиться.