Android/PHP - 同步本地和远程数据库的最佳方式

Posted

技术标签:

【中文标题】Android/PHP - 同步本地和远程数据库的最佳方式【英文标题】:Android/PHP - Best way to synchronize local and remote databases 【发布时间】:2014-04-29 03:42:04 【问题描述】:

我有一个需要从网络服务器接收一些数据的 android 应用。我已经让一切正常了,我的问题是.. 如果我总是通过 html 表单向远程数据库添加一些数据,那么从网络服务器同步数据的最佳方式是什么?

我想放置一个时间戳,然后我可以接收带有时间戳的数据,我可以将时间戳与我的 Android 应用程序数据库中的每个数据条目进行比较,然后更新或将信息添加到我的本地数据库中。

最好的方法是什么?我应该在远程和本地服务器中的每个条目上加上时间戳吗?如果是.. 时间戳在 php(mysql) 和 Android(SQLite) 中如何工作?

提前致谢! ;D

【问题讨论】:

需要多长时间的实时性? 不需要是实时的。。人们会从google play获取我的应用程序,然后每次打开它时,我都想检查数据库的新版本 简单的基于xml的网络服务? 使用 json 的简单 Web 服务 【参考方案1】:

我假设数据对于应用程序是只读的,并且只在服务器上更改。

以下是我们如何做类似的事情:

应用程序将“last_sync_date”传递给服务器。如果 last_sync_date 为 null,则服务器传回所有数据。

服务器总是将 last_sync_date 传回给应用程序。 last_sync_date 是 UTC 服务器时间。应用程序存储 last_sync_date。

显然,last_sync_date 在应用第一次发送时将为空,因此第一次它会获取所有数据。从那时起,它只获取新数据。

是的,每个条目上的时间戳用于确定哪些记录是新的/修改的。

如果需要,为每个条目添加一个已删除的列以“删除”它们。

【讨论】:

非常好!谢谢马库斯·亚当斯!就像我说的,我会把这个应用程序放到 google play 中,我需要为每个下载我的应用程序的用户提供一个用户 ID 和私钥吗?然后我会在我的远程服务器中有另一个表,每个表都有 user_id 和 user_key?这样我可以保护我的应用程序,你认为有必要吗?你知道任何可以帮助我学习 Android 编程真正专业方面的资料或网站吗?非常感谢! @etnishiyama,请参阅其他答案,了解有关 API 安全性的更多详细信息。 ***.com/questions/19460878/…如果不清楚,应用程序应该调用API,而不是直接连接到数据库。此外,如果要发送任何凭据或任何敏感信息,请使用 HTTPS。我实际上在我工作的 ios 团队,而不是 Android 团队。我可以告诉你,他们的 IDE 使用 IntelliJ IDEA 社区版。 非常感谢!我不知道那个 IDE。 @MarcusAdams 如何识别特定记录已更新或新记录? @ChiragParekh,您可能错过了以下句子。 “是的,每个条目上的时间戳用于确定哪些记录是新的/修改的。”

以上是关于Android/PHP - 同步本地和远程数据库的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

同步本地和远程网站

本地远程数据同步之rsync

本地MySQL数据库怎么与远程MySQL数据库同步

使用 Mysql Workbench 将两个 db 从本地同步到远程

OrientDB - 将本地数据库与远程数据库同步

远程同步命令-rsync