繁体   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