我正在开发一个Adobe AIR应用程序,它使用SQLite数据库在本地存储数据。 在任何时候,我都希望最终用户将他/她的本地数据同步到中央MySQL数据库。
任何提示,建议如何做到这一点? 性能和稳定性是关键(除了安全性;))
答案 0 :(得分:1)
我可以想到几种方法:
定期转储MySQL数据库并从转储中创建新的SQLite数据库。然后,您可以为用户客户端提供SQLite数据库(SQLite数据库包含在单个文件中),以便下载和替换当前数据库。
创建一个diff脚本,生成必要的语句以使当前数据库加速(各种INSERT,UPDATE和DELETE语句)。为此,您必须在数据库中连续记录每个更改的时间(每行的创建和更新时间,并保留已删除行的历史记录)。 用户的客户端将下载diff文件(各种语句的文本文件)并将其应用于本地数据库。
这两种方法各有利弊 - 通过转储整个数据库,确保所有数据都通过。它也比创建diff容易得多,但是它可能会给服务器带来更多负载,具体取决于数据库在转储之间更新的频率。
另一方面,数据库之间的差异只会给你改变的数据(希望如此),但它更容易出现逻辑错误。它还会在客户端产生额外的开销,因为它必须创建/更新所有必要的记录,而不是仅仅复制文件。
答案 1 :(得分:1)
如果您只是从服务器同步到客户端,Eran的解决方案应该可以正常工作。
如果您只是从客户端同步到服务器,只需将其反转即可。
如果你同时进行双向同步,那就玩吧。您至少可能希望保留更改日志,并且您需要弄清楚如何处理冲突。