摘要太大:數據結構時,數據是客戶
我怎樣也不能容納內存中的所有數據,並保持斷開客戶數據量非常大的同步?
說明:
我有一個實時(AJAX /彗星)的應用程序,這將顯示在網絡上的一些數據。 我喜歡將此視爲Web上的視圖,並將模型放在服務器上。
假設我在服務器上有大量記錄,所有這些記錄都會一直添加/刪除/修改。這裏是問題:
- 這是網絡,客戶端可能有很多連接/斷開連接。客戶端斷開連接時,數據可能已被修改,客戶端在重新連接時需要更新。但是,每次有重新連接時,客戶端都不能發送所有數據,因爲數據非常大。
- 由於數據太多,客戶端顯然無法發送全部數據。想想擁有數以千計的郵件的gmail帳戶或谷歌地圖......整個世界!
我意識到,最初會將一些相關數據子集的完整快照發送到客戶端,然後纔會發送增量更新。這可能會通過某種序列號完成......客戶端會說「我收到的最後一次更新是#234」,客戶端將發送#234和#current之間的所有消息。
我也意識到客戶端視圖會通知服務器它正在'顯示'記錄100-200「所以只發給我那些」(也許0-300,無論什麼策略)。
但是,我討厭自己編碼所有這些。已經存在一個足夠普遍的普遍問題,必須有庫(或至少一步一步的配方)。
我期待在Java或node.js中執行此操作。如果解決方案有其他語言版本,我會樂意改變。
您指定的所有比較從不需要客戶端的完整數據集,所以它們甚至不嘗試。是否有任何要求,您的應用程序需要在任何特定時間完整的數據集?如果沒有,爲什麼還要麻煩?只要在請求時發送相關的*查看*數據。 – Joe 2011-05-15 19:20:49
@Joe,我想我正在考慮DWR庫[http://directwebremoting.org/dwr/index.html],它有一種同步數據結構的方法,但沒有辦法將它鏈接到一個看法(據我所知)。 – Shahbaz 2011-05-15 19:35:32
@Joe,我也知道有幾個嘗試允許backbone.js模型的透明同步。他們再一次解決了一個非常重要的問題,但是如果數據太大,客戶端無法處理,解決方案將無法正常工作。我正在尋找一種解決方案,它將數據syn +知道哪些數據子集實際上需要同步 – Shahbaz 2011-05-15 19:37:34