1

我有一个集中托管的数据库(MS SQL Server),分布式客户端通过Internet将数据保存到它。当互联网连接断开时,客户端开始将新数据本地存储到SQLite实例中。当互联网连接重新联机时,累积的本地数据将被移至中央数据库(已插入)。为将要合并的分布式数据创建独特身份的最佳方法?

在这种情况下处理唯一ID的最佳方式是什么?其他重要信息:

  • 本地客户能记住他们的本地数据库的ID以链接的目的而下线;因此必须将本地ID生成为全局唯一。

  • 本地数据库中的唯一ID在合并回中央数据库时不应更改。

  • 根据设备的不同,将来可能会为本地操作选择不同种类的数据库 - 例如, JavaDb,TextFileDb等;因此我认为这个解决方案不应该使用任何专有的数据库特性。

  • 当更改合并回中央数据库时,所有记录都必须具有唯一的ID。

对于这个问题的假设名为MyTable带有字段的简单表:ID(主/唯一键无论何种类型应该是)和Field1Field2Field3后者没有真正的问题。

首先想到的是使用GUID。有没有比这更好的方式或实践,或更好的方式来实现这一目标?

编辑: 使用Microsoft .NET和ADO.NET

回答

1

GUID的作品。除此之外,这在很大程度上是Microsoft Sync Framework解决的问题(您没有提到您的开发平台,所以这里有一个假设)。它不依赖于任何数据库或数据类型或协议,并且可以配置在各种情况下脱机工作(好吧,这是开始听起来像一个商业...)

http://msdn.microsoft.com/en-us/sync/bb887625.aspx

+0

你的假设是:正确。我添加了标签[ado.net]和[.net] – 2010-01-27 03:56:34

+0

同步框架是我将要采用的方向。感谢您提出建议;我以前从未听说过这项技术。为了更好地了解Sync,这个.NET Rocks广播节目对我很有用:http://www.dotnetrocks.com/default.aspx?showNum=499 – 2010-01-28 04:26:37

相关问题