将移动(iPhone)应用与网络应用同步

时间:2009-08-12 04:58:36

标签: iphone mysql database sqlite sync

我正在构建一个iPhone应用程序/ Web应用程序,我正在尝试通过最佳方式来实现数据库的双向同步。我可能会在iPhone上使用sqlite和在网上使用mysql(因为这就是我所知道的),但我不确定如何处理它们保持同步。

以下是示例模式:

index_id(自动增量)|标题|金额| user_id |创建(日期时间)

Similar thread

4 个答案:

答案 0 :(得分:5)

好的,我后来有两个关于如何处理这个问题的想法,认为它作为答案比编辑更好:

1)您有两个数据库,一个用于手机,另一个用于网络应用。架构如下所示:

index_id | title | amount | user_id | created | environment | foreign_id

所以,假设我的移动设备上有一个条目:1,'标题',2.00,1,现在()和我的网络应用程序上的条目,1,'Something',5.00,1,NOW()。为避免这两件事发生冲突,网页应用会添加一行,分别为2,'标题',2.00,1,现在(),'移动',1。

通过这种方式,我可以正确地维护所有index_id。这似乎是维持和正确的绝对噩梦。

2)如果要将数据库(例如网络应用程序)指定为主服务器并将设备指定为从服务器,那么您在Web应用程序上有一个表并且有两个表装置。对于设备,您将有一个表'队列',在网络连接时,它将更新实时Web应用程序数据库(同时清除自己),然后WEB APP数据库将同步,单向,返回该设备的第二个主表。

在同步之前,设备上的业务逻辑必须将两个本地表视为一个。这似乎比上面更容易解决。

答案 1 :(得分:2)

这是一个问题,因为你必须处理某些情况,比如。 A =服务器,B = iPhone

A - Adds new entry
B - Adss new entry
A - Get B's entry
B - Get A's entry
A - Update entry
B - Delete A's entry

(您使用哪一个,是否将A更改同步到A或者删除A制作的B上的项目?)

同步部分可以是一个简单的推/拉式http请求,它是如何正确地保持它们同步引起关注的后勤。

对于如何:只需让iPhone检查服务器页面(update.php)是否有任何变化及其变化。使用iPhone发送的更改更新服务器,并使用请求发回的任何更改(使用JSON或XML)更新iPhone。

答案 2 :(得分:2)

只需在两个位置复制架构,并在每个表的每一行中抛出一个时间戳。然后让客户端发送其最新的时间戳,让服务器返回比它更新的行。

最简单的方式......

答案 3 :(得分:0)

为什么您的Web应用程序没有为您的iPhone客户端提供安全/经过身份验证的Web服务?

例如,iPhone将与此服务通信(使用JSON,XML,SOAP等),您只需维护一个数据库。