簡體   English   中英

如何使用離線和在線數據庫創建Java桌面應用程序,並定期進行同步?

[英]How to create java desktop application with offline and online database, syncing periodically?

我想創建一個Java桌面應用程序,將它的數據離線存儲在數據庫中(而不僅僅是一些配置文件)。 當用戶脫機時,該應用程序應該可以正常運行。 當用戶聯機時,脫機數據庫應該能夠與聯機主數據庫同步。

有什么想法可以用來實現這一目標的技術嗎?

關於堆棧溢出的討論很多,通常可以歸結為:不要推出自己的解決方案-這是一個非常專業的領域-查找SymmetricDS。 它可以滿足您的需求。

我最喜歡的討論之一是離線/在線數據同步策略

使用可用的純Java DB實現之一作為本地DB。 使用任何其他數據庫作為遠程數據庫。 實現嘗試連接到遠程數據庫並在失敗時回退到本地數據庫的邏輯。 如果成功連接到遠程數據庫,則執行數據同步。

當本地應用程序運行時,它不僅應更改數據庫,還應記錄更改。 當連接可用時,這些更改將發送到服務器。 同樣,應用程序從其他應用程序實例接收存儲在服務器上的記錄的更改。

主要問題是如何合並不同實例所做的更改。 可以有3種變體:

1)每個應用程序實例只能修改其整個數據庫的私有部分。 您很幸運,不需要合並,服務器只能存儲日志,不能運行整個數據庫。

2)修改總是可以自動合並(例如,應用程序可以將值添加到公共變量,但不能直接設置它)。 服務器運行整個數據庫,從客戶端接受部分日志,生成自己的日志並將其發送給客戶端。

3)允許客戶進行任意修改。 這導致潛在的沖突。 如果發生沖突,則應拒絕其中一項相沖突的更改。 這意味着,如果客戶端進行了本地修改,則該修改稍后可以被服務器拒絕。 用戶界面必須反映此問題。 在其余部分中,這類似於變體2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM