帮助快速和脏的数据库同步解决方案

时间:2010-03-04 14:00:38

标签: mysql windows-mobile synchronization

我的截止日期有问题。那个截止日期是明天:S幸运的是它不一定是最好的解决方案;甚至不是一个好人。我只需要一部分工作,我将在稍后介绍。我想让你知道的是,我正在寻找最快最肮脏的解决方案,所以我的想法可能听起来很糟糕。

所以,过去几天I've been trying to synchronize a database located in a Windows Mobile device with a MySQL database位于中央linux服务器上。 Microsoft's walkthrough包含一个我不确定如何处理的Web服务(我对这个领域的知识非常有限)。据我所知,有一个服务应该位于服务器端,但由于各种原因(包括它是一个Linux机器)这是不可能的。此外,我还没有弄清楚如何创建一个mysql同步提供程序。

我的解决方案,这是一个丑陋的想法,就是在服务器上创建一个Java Web服务,负责跟踪每个Windows Mobile的同步请求并做出适当的响应。以下是我认为它会如何:

每个Windows Mobile设备都将包含一个本地数据库(SQL Compact)。当存在活动的互联网连接时,它将向Web服务发送请求以同步其用户名和密码发送的数据库。 Web服务将从这些凭据(在请求时转储数据库)中查找最后一个同步请求,并将其与当前数据库状态进行比较。该服务仅作为响应发送更改。发送响应后,它会将当前数据库状态存储为用户对下一个同步请求的上一次同步请求。 Windows Mobile设备所要做的就是遵循响应(简单的CRUD语句)。

所以,我的问题最后是:如何存储数据库状态以便以后将其与未来状态进行比较?

当然,毋庸置疑,如果有一个可以快速完成的更好的解决方案,我可以抛弃这个想法。

对于这种情况,您需要了解以下内容:服务器正在运行linux。它上面的数据库是MySQL,我无法修改架构。但是我可以在服务器上安装软件,就像webservice一样。最后,Windows Mobile设备当前正在运行SQL Compact。当然,这不应该花费任何费用,因为它不是最终解决方案(一旦我弄清楚了一些事情,它将使用Microsoft Sync Framework。)

非常感谢你。我也希望你知道这不是一个“给我代码”的问题,我主要是寻找任何类型的反馈(评论/想法/建议/咆哮/等)。

2 个答案:

答案 0 :(得分:1)

这是一种随机(可能是愚蠢且不可行)的方式来解决它。如果我理解正确,您只在一个方向同步(从MySQL数据库到移动设备)。如果它是双向同步,那么这根本不起作用。

在数据库上设置复制以复制到数据的从属副本。在该从属数据库中,将触发器放在所涉及的表上,对于每个修改(删除,更新,插入),写入必要的信息以生成对某个文件/表的CRUD语句。然后在同步期间,只需将这些语句重播到设备,然后删除/清除文件。然后,下一次同步将重放下一组累积的语句。

答案 1 :(得分:1)

为什么不简单地为数据库中的所有数据创建MD5密钥并存储?这不会让你看到发生了什么变化,但至少你会知道已经做出了改变。