Лучший способ создать уникальные идентификаторы для распределенных данных, которые будут объединены?

У меня есть централизованная база данных (MS SQL Server), и распределенные клиенты сохраняют в ней данные через Интернет. Когда интернет-соединение обрывается, клиент начинает локально хранить новые данные в экземпляре SQLite. Когда подключение к Интернету возвращается в оперативный режим, накопленные локальные данные перемещаются в центральную базу данных (вставлена).

Как лучше всего обрабатывать уникальные идентификаторы в этом сценарии? Другая важная информация:

  • Локальные клиенты могут помнить свои локальные идентификаторы БД для связи в автономном режиме; поэтому локальные идентификаторы должны быть сгенерированы как глобально уникальные.

  • уникальный идентификатор в локальной базе данных не должен изменяться при слиянии обратно в центральную базу данных.

  • Различные типы баз данных могут быть выбраны для локальных операций в будущем в зависимости от устройства - например, JavaDb, TextFileDb и т. Д.; поэтому я думаю, что ни одна запатентованная функция БД не должна использоваться для этого решения.

  • Когда изменения объединяются с центральной базой данных, все записи должны иметь уникальные идентификаторы.

Для этого вопроса предположим простую таблицу с именем MyTable с полями: ID (первичный / уникальный ключ любого типа) Field1, Field2, Field3 Последнее не имеет значения.

Первое, что пришло на ум, - это использование GUID. Есть шаблон или практика, которая лучше этого или лучший способ выполнить это?

Изменить: Использование Microsoft .NET и ADO.NET

2 ответа

Решение

GUID работает.

Кроме того, это в значительной степени решенная проблема с Microsoft Sync Framework (вы не упомянули свою платформу разработки, поэтому здесь есть предположение). Он не привязан к какому-либо БД, типу данных или протоколу и может быть настроен для работы в различных автономных сценариях (хорошо, это начинает звучать как коммерческий...)

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

Как вы сказали, GUID приходят на ум по многим очевидным причинам, некоторые из которых описаны здесь. Первичные ключи: идентификаторы и идентификаторы GUID.

Возможно, вы захотите прочитать этот ответ также. Как лучше всего использовать первичные ключи в таблицах?

Другие вопросы по тегам