在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP  Linux  數(shù)據(jù)庫(kù)  HTML/ 用戶(hù)離線(xiàn)時(shí)產(chǎn)生了N多條操作記錄,然后上傳到了云端,請(qǐng)問(wèn)如何把它們合并成數(shù)據(jù)最后的

用戶(hù)離線(xiàn)時(shí)產(chǎn)生了N多條操作記錄,然后上傳到了云端,請(qǐng)問(wèn)如何把它們合并成數(shù)據(jù)最后的狀態(tài)?

如題,我們是一款可以本地閱讀圖書(shū)的應(yīng)用。用戶(hù)可以針對(duì)一本書(shū)進(jìn)行筆記操作,具體而言,主要講就是“增刪改查”筆記。

我們是支持離線(xiàn)使用的,為了保證數(shù)據(jù)同步,用戶(hù)離線(xiàn)使用時(shí)的“每一個(gè)操作”都會(huì)生成一條usageRecord,有點(diǎn)像log吧。
比如用戶(hù)離線(xiàn)時(shí),先增加一條筆記,我們會(huì)記錄
{noteId:a-guid-string,operation:add,time:123123123}
然后用戶(hù)又更新了一下這條筆記,我們就會(huì)記錄:
{noteId:a-guid-string,operation:update,time:123123123}
最后用戶(hù)又刪除了這條筆記,我們就會(huì)記錄:
{noteId:a-guid-string,operation:delete,time:123123123}

當(dāng)用戶(hù)聯(lián)網(wǎng)之后,客戶(hù)端就會(huì)把上述3條數(shù)據(jù)都傳到服務(wù)器端,讓服務(wù)期存到數(shù)據(jù)庫(kù)。但是存之前,需要先把數(shù)據(jù)整理成最終的樣子,請(qǐng)問(wèn)有什么好的解決方案可以參考嗎?

PS:也可以在客戶(hù)端完成數(shù)據(jù)的處理,然后上傳到服務(wù)期端。

回答
編輯回答
久礙你

對(duì)于任意數(shù)據(jù): 不是所有數(shù)據(jù)都一定能合并 ("最終一致")。比如dropbox在有沖突的時(shí)候是直接給你復(fù)制一份,讓你自己解決。

只有文本的時(shí)候相對(duì)好些,但能合并也需要不弱的條件。無(wú)法合并時(shí)讓人類(lèi) (你的用戶(hù)) 處理可能比較好。

2018年5月27日 23:52
編輯回答
憶往昔

聯(lián)網(wǎng)情況下,這些不是同步處理的么?

現(xiàn)在有個(gè)想法:

離線(xiàn)之后,再聯(lián)網(wǎng)的操作,就相當(dāng)于把之前這段時(shí)間的操作再回放一下,
那么可否把這些請(qǐng)求暫存進(jìn)一個(gè)客戶(hù)端的任務(wù)隊(duì)列,聯(lián)網(wǎng)的時(shí)候,再去消費(fèi)這個(gè)隊(duì)列?

2017年3月14日 08:56