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

时间:2014-05-22 18:07:59

标签: java android mysql database sqlite

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

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

我希望用户能够在离线状态下查看群组详情。

我一直在做一些研究,并绘制图表,说明这是如何工作的。

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

以下是我最终缩小的几个选项。

  1. 让远程数据库存储所有内容。在设备上有一个反映远程数据库的本地数据库。让远程DB包含版本号。在某个时刻,无论是计划的还是触发的,应用程序都会比较本地和远程的版本号,如果本地已过期,它将更新到当前的远程数据库。
  2. 让远程数据库存储所有内容。在设备上有一个本地数据库,它反映远程数据库中除消息传递系统之外的所有内容。这与#1类似。除了与消息传递系统相关的表和内容之外,“某种程度上,gcm可能”向与用户相关联的所有设备发送消息,该消息与用户相关的消息已经改变,然后应用程序将更新到最新版本的远程数据库中的远程消息传递表。然后他们的本地数据库包含新数据,他们的“消息框”将被更新。
  3. 最好的方法是什么?目前在大多数系统中如何完成?我列出的是否有更多选择?

    远程数据库:MySql

    本地数据库:sqlite

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

    由于

1 个答案:

答案 0 :(得分:2)

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

数据库版本#可以正常工作,但如果它经常更改,您将最终重新同步所有数据。如果你只是存储"上次修改日期"它可能会更好。在记录上,只下拉自上次同步以来发生变化的事情。这样你就可以返回一小组新记录。

您只想提取公共信息(组)和特定于用户的信息。远程数据库将包含所有内容,但本地数据库只包含与用户相关的数据。

我发现this tutorial介绍了如何使用远程服务器上的php实现API访问。您可以使用ORM或" Out of the Box"来简化此过程。 API解决方案。

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