我正在开发一个 Adobe AIR 应用程序,它使用 SQLite 数据库在本地存储数据。在任何时候,我都希望最终用户将他/她的本地数据同步到中央 MySQL 数据库。
有什么提示和建议可以正确解决这个问题吗?性能和稳定性是关键(除了安全性;))
我正在开发一个 Adobe AIR 应用程序,它使用 SQLite 数据库在本地存储数据。在任何时候,我都希望最终用户将他/她的本地数据同步到中央 MySQL 数据库。
有什么提示和建议可以正确解决这个问题吗?性能和稳定性是关键(除了安全性;))
If you're just sync'ing from the server to client, Eran's solution should work.
If you're just sync'ing from the client to the server, just reverse it.
If you're sync'ing both ways, have fun. You'll at minimum probably want to keep change logs, and you'll need to figure out how to deal with conflicts.
我可以想到几种方法:
定期转储您的 MySQL 数据库并从转储中创建一个新的 SQLite 数据库。然后,您可以为您的用户客户端提供 SQLite 数据库(SQLite 数据库包含在单个文件中)以下载和替换当前数据库。
创建一个 diff 脚本,生成必要的语句以使当前数据库加速(各种 INSERT、UPDATE 和 DELETE 语句)。为此,您必须在数据库中连续记录每次更改的时间(每行的创建和更新时间,并保留已删除行的历史记录)。用户的客户端将下载差异文件(各种语句的文本文件)并将其应用于本地数据库。
这两种方法各有优缺点 - 通过转储整个数据库,您可以确保所有数据都通过。它也比创建差异更容易,但是它可能会给服务器带来更多负载,具体取决于数据库在转储之间更新的频率。
另一方面,数据库之间的差异只会为您提供更改的数据(希望如此),但它更容易出现逻辑错误。它也会给客户端带来额外的开销,因为它必须创建/更新所有必要的记录,而不仅仅是复制文件。