代码之家  ›  专栏  ›  技术社区  ›  John K

为要合并的分布式数据创建唯一标识的最佳方法?

  •  1
  • John K  · 技术社区  · 15 年前

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

    在这个场景中,处理唯一ID的最佳方法是什么? 其他重要信息:

    • 本地客户机可以记住其本地数据库ID,以便在脱机时进行链接;因此,必须将本地ID生成为全局唯一的。

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

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

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

    对于这个问题,假设一个名为 MyTable 随场: ID (主/唯一键,无论是什么类型)和 Field1 , Field2 , Field3 后者并不重要。

    首先想到的是使用guid。有没有比这更好的模式或实践,或者更好的方法来实现这一点?

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jay    15 年前

    GUID作品。

    除此之外,这在很大程度上是微软同步框架解决的问题(你没有提到你的开发平台,所以这里有一个假设)。它没有绑定到任何数据库、数据类型或协议,可以配置为在各种脱机情况下工作(好吧,这听起来像是商业化的…)

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

        2
  •  0
  •   Cœur N0mi    6 年前

    正如您所说,guid的出现有很多明显的原因,其中一些原因在这里介绍 Primary Keys: IDs versus GUIDs

    你也可以阅读这个答案 What's the best practice for primary keys in tables?