1

我有一个集中托管的数据库(MS SQL Server),分布式客户端通过 Internet 将数据保存到其中。当 Internet 连接中断时,客户端开始将新数据本地存储到 SQLite 实例中。当 Internet 连接恢复联机时,累积的本地数据将移动到中央数据库(插入)。

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

  • 本地客户端可以在离线时记住他们的本地数据库 ID 以进行链接;因此,本地 ID 必须生成为全局唯一的。

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

  • 未来可能会根据设备选择不同类型的数据库用于本地操作 - 例如 JavaDb、TextFileDb 等;因此我认为这个解决方案不应该使用单一的专有数据库功能。

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

对于这个问题,假设一个简单的表以MyTable字段命名:(ID主键/唯一键,无论应该是什么类型)和Field1, Field2,Field3后者并不重要。

首先想到的是使用 GUID。有没有比这更好的模式或实践或更好的方法来执行此操作?

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

4

2 回答 2

1

GUID 有效。

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

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

于 2010-01-27T03:53:58.347 回答
0

正如您所说,出于许多明显的原因,GUID 浮现在脑海中,其中一些在此处介绍 主键:ID 与 GUID

您可能还想阅读此答案 表中主键的最佳做法是什么?

于 2010-01-27T03:48:19.933 回答