在同步db时区分数据的方法?

时间:2011-01-13 19:19:06

标签: database synchronization

我有一个可以创建一些笔记的网络应用程序,每次创建一个新笔记时,它都会插入一个带有auto_increment id的表格。 (很明显)

现在我想开发一个Android应用程序,我也可以创建注释(在sqlite中本地保存它们),然后将这些注释与服务器同步。

问题是,当我在手机中创建笔记时,他们将拥有自己的auto_increment id,这些ID会多次与服务器中的那些笔记相同!

我不在乎有重复的笔记(实际上我认为没有办法区分新笔记是否重复,因为他们没有一些物理ID),问题是如果他们有相同的ID(主键),我将无法将它们插入服务器。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

最明显的解决方案是除了数据库的auto_increment_id 之外,还为每个音符提供自己唯一的散列或GUID。

然后,您可以使用这些唯一值作为同步的基础,并结合每个表中的“上次同步”时间戳,以便您知道需要同步哪些数据,并且可以轻松确定数据是否已存在于目的地(并且应该更新)或者是否是新笔记。

答案 1 :(得分:0)

对不起,我认为你的数据库结构错了。您不能以这种方式使用自动增量字段,不同的DB具有断开连接的体系结构。为特定用途创建自动增量值,如果需要合并这样的两个表,则必须实现不同的逻辑。使用note_id以独特的方式识别注释,使用更多数据(即用户ID,设备ID等)使该ID唯一。在这种情况下,自动增量只会给你一个凌乱的架构

答案 2 :(得分:0)

您可以使用UUID作为笔记的关键。

这样,每个条目都应该有一个唯一的id,无论是在服务器上还是在客户端上创建的。

要创建UUID,您可以使用UUID.randomUUID()