Android 应用程序远程数据库同步

Posted

技术标签:

【中文标题】Android 应用程序远程数据库同步【英文标题】:Android application remote database syncing 【发布时间】:2014-07-11 22:16:36 【问题描述】:

我正在开发一个 android 应用程序,用户将在其中看到组列表并加入 1-* 组。组内将有成员,用户可以在他们加入的组内相互发送消息。向多人发送消息并回复所有人。

我希望它支持多种设备。所以,如果我加入一个群组并且有人给我发了一条消息,我想在我的手机和平板电脑上看到这条消息。如果两者都安装了应用程序。

我希望用户能够在离线时查看组详细信息。

我一直在做一些研究并绘制图表以了解其工作原理。

对于如何使用远程数据库进行设置,我有哪些选择?

这是我最终缩小到的几个选项。

    让远程数据库存储所有内容。在设备上有一个反映远程数据库的本地数据库。让远程数据库包含一个版本号。在某个时间点,无论是计划的还是触发的,应用都会比较本地和远程的版本号,如果本地版本过时,它将更新到当前的远程数据库。 让远程数据库存储所有内容。在设备上有一个本地数据库,它反映了远程数据库中除消息传递系统之外的所有内容。这将类似于#1。除了与消息系统相关的表格和东西会“不知何故,gcm 可能”向与用户关联的所有设备发送一条消息,说明与用户相关的消息已更改,然后应用程序将更新到最新版本远程数据库中的远程消息传递表。然后他们的本地数据库包含新数据,他们的“消息框”将被更新。

最好的方法是什么?目前在大多数系统中这是如何完成的?还有比我列出的更多的选项吗?

远程数据库:mysql

本地数据库:sqlite

我知道here on SO 有一些类似的问题,但我想知道这些选项或其他选项中的任何一个是否最适合我的具体情况。主要是如何处理消息部分。

谢谢

【问题讨论】:

【参考方案1】:

我认为选项 1 是处理此问题的一种非常标准的方式。

数据库版本 # 可以工作,但如果它经常更改,您最终会经常重新同步所有数据。如果您仅将“上次修改日期”存储在记录中并且仅下拉自上次同步以来已更改的内容,它可能会更好。这样您就可以返回一组较小的新记录。

您只想下拉公共信息(组)和特定于用户的信息。远程数据库拥有一切,但本地数据库只包含与用户相关的数据。

我找到了this tutorial,它介绍了如何在远程服务器上使用 php 实现 API 访问。您可以使用 ORM 或“开箱即用”API 解决方案来简化此过程。

我确信有更优雅的解决方案可以将本地 Android 数据库与远程同步,但这可能是非企业解决方案最实用的方法。

【讨论】:

以上是关于Android 应用程序远程数据库同步的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用程序远程数据库同步

将 Android 应用上的 SQLite DB 与远程 MySQL DB 同步

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

将 SQLite/Android 数据库表同步到远程 MySQL 数据库表(通过 PHP)

在android中将SQLite数据库与远程mysql数据同步

在 Android 中将 Sqlite 数据库与远程服务器同步