概要:
すべてのデータをメモリに保持できず、切断し続けるクライアントと非常に大量のデータを同期するにはどうすればよいですか?
説明:
Web 上にデータを表示するリアルタイム (ajax/comet) アプリがあります。これは、ビューが Web 上にあり、モデルがサーバー上にあると考えるのが好きです。
サーバー上に多数のレコードがあり、それらすべてが常に追加/削除/変更されているとします。問題は次のとおりです。
-これは Web であるため、クライアントは多くの接続/切断を行う可能性があります。クライアントが切断されている間、データが変更されている可能性があり、再接続時にクライアントを更新する必要があります。ただし、データが非常に大きいため、再接続のたびにすべてのデータをクライアントに送信することはできません。
- 非常に多くのデータがあるため、明らかにクライアントにすべてを送信することはできません。数千のメッセージを含む Gmail アカウントや、世界中の Google マップを考えてみてください。
最初に、関連するデータのサブセットの完全なスナップショットがクライアントに送信され、その後は増分更新のみが送信されることを認識しています。これは、ある種のシーケンス番号を通じて行われる可能性があります... クライアントは「受信した最後の更新は #234 でした」と言い、クライアントは #234 と #current の間のすべてのメッセージを送信します。
また、クライアントビューがサーバーに100〜200のレコードを「表示」していることを通知することも認識しています。
ただし、これらすべてを自分でコーディングするという考えは嫌いです。ライブラリ(または少なくとも段階的なレシピ)がすでに存在している必要があるという一般的かつ一般的な問題があります。
Javaまたはnode.jsでこれを行うことを検討しています。他の言語で解決策が利用できる場合は、喜んで切り替えます。