我有一个集中托管的数据库(MS SQL Server),分布式客户端通过 Internet 将数据保存到其中。当 Internet 连接中断时,客户端开始将新数据本地存储到 SQLite 实例中。当 Internet 连接恢复联机时,累积的本地数据将移动到中央数据库(插入)。
在这种情况下处理唯一 ID 的最佳方法是什么?其他重要信息:
本地客户端可以在离线时记住他们的本地数据库 ID 以进行链接;因此,本地 ID 必须生成为全局唯一的。
当合并回中央数据库时,不应更改本地数据库中的唯一 ID。
未来可能会根据设备选择不同类型的数据库用于本地操作 - 例如 JavaDb、TextFileDb 等;因此我认为这个解决方案不应该使用单一的专有数据库功能。
- 当更改合并回中央数据库时,所有记录都必须具有唯一的 ID。
对于这个问题,假设一个简单的表以MyTable
字段命名:(ID
主键/唯一键,无论应该是什么类型)和Field1
, Field2
,Field3
后者并不重要。
首先想到的是使用 GUID。有没有比这更好的模式或实践或更好的方法来执行此操作?
编辑: 使用 Microsoft .NET 和 ADO.NET