提供智能手机和网络应用程序时如何确保本地和远程数据库之间的数据一致性

How to ensure data consistency between local and remote database when providing smartphone and web app

我正在开发一个 flutter 应用程序,它应该也能够 运行 在离线模式下。因为我使用的是 flutter,所以我还想提供使用我的应用程序的 Web 版本。我要构建的应用程序是数据依赖的,因此要使其脱机工作,我需要某种本地数据库,但要使 Web 版本正常工作,我还需要将数据存储在远程数据库中,以便可以从网络。这提出的问题是我如何确保本地和远程数据库始终在同一页面上。如果从 Web 更改某些内容,它还需要影响设备上的本地数据库,如果在本地更改某些内容,它还必须影响远程数据库。我只需要一个关于如何大致实现我正在寻找的东西的提示。

这可以使用支持离线的 Firebase Firestore 轻松实现。

或者

如果您打算从头开始执行此操作,一种方法是保留一个单独的本地数据库并在其上执行每个事务。如果在线,则在远程数据库上执行相同的事务。如果离线,则在本地数据库(最好在与主数据库不同的数据库中)保留待处理事务的记录,并在连接远程数据库时执行它们。

您可以对本地数据库使用 Hivesqflite

或者

跟踪执行交易的记录。在同步合并来自本地(离线完成)和远程(在网络上完成,phone 未连接)的这些记录之前。如果在同一记录上执行了多个事务,则将远程和本地数据库记录更新为执行最新事务的数据库的最新记录状态(如果在远程数据库上执行了最新事务,则更新本地数据库,反之亦然)