Лучший способ создать уникальные идентификаторы для распределенных данных, которые будут объединены? - PullRequest
1 голос
/ 27 января 2010

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 27 января 2010

GUID работает.

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

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

0 голосов
/ 27 января 2010

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

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

...