[英]Connect multiple desktop apps to one online database
我正在開始一個新項目。 它包括:
下載應用程序的用戶將使用它將項目(現在不重要的是)離線添加到本地數據庫。 當/如果他在線時,該項目將被添加到服務器數據庫,以便其他連接的用戶(通過桌面應用程序或通過網站)將看到它。 我用谷歌搜索了這個問題,發現它比我想象的要復雜得多。 其中一個解決方案是使用一些現成的工具,如SymmetricDS
和Daffodil
來獲得安全性 , 性能和可伸縮性 ,但它們很難在客戶端和服務器端配置和安裝,並且需要訪問命令提示符,這需要我傳遞給一個專門的主人(好吧,這不是一個真正的問題)。 此外,我想要的只是我所描述的,而不是這些工具實際提供的所有內容。
我正在使用MySQL獲取信息。
編輯:真正重要的是將項目發送到服務器數據庫。 例如,使用RSS Feed讀取讀取它可能不那么棘手。
基本上,您可以使用HTTP / HTTPS API。 當用戶在線時,將項目發送到您的php文件並在本地數據庫中標記“已發送”項。 但您必須控制已編輯或已刪除的狀態。 所以,是的,這很復雜,但卻是一個解決方案。
那么我想到的最簡單的解決方案是為每個項目保存最后一個編輯日期(在服務器上和客戶端上)。 另外,當客戶端從服務器獲得最后一次更新時,您必須跟蹤。
因此,每當客戶端上線時,服務器都會向他發送所有更新。
但是為此你必須確保客戶端和服務器上的時間是相同的,並且它不能解決問題,如果兩個客戶端編輯同一個項目會發生什么。
CouchDB很好地解決了分布式同步問題,但它是一個NoSQL DB。 根據您的應用程序應該做什么,使用它可以歸結為在本地內部非常應用程序和中央服務器上使用CouchDB實例。
不過,你必須處理沖突。 CouchDB唯一支持您的是更容易檢測沖突和兩個沖突編輯的數據,因此您的應用程序可以自動或在用戶幫助下解決。
另一方面,在中央服務器上生成唯一ID可以像將創建用戶的id添加到每個項ID一樣簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.