Лучший способ создать уникальные идентификаторы для распределенных данных, которые будут объединены?
У меня есть централизованная база данных (MS SQL Server), и распределенные клиенты сохраняют в ней данные через Интернет. Когда интернет-соединение обрывается, клиент начинает локально хранить новые данные в экземпляре SQLite. Когда подключение к Интернету возвращается в оперативный режим, накопленные локальные данные перемещаются в центральную базу данных (вставлена).
Как лучше всего обрабатывать уникальные идентификаторы в этом сценарии? Другая важная информация:
Локальные клиенты могут помнить свои локальные идентификаторы БД для связи в автономном режиме; поэтому локальные идентификаторы должны быть сгенерированы как глобально уникальные.
уникальный идентификатор в локальной базе данных не должен изменяться при слиянии обратно в центральную базу данных.
Различные типы баз данных могут быть выбраны для локальных операций в будущем в зависимости от устройства - например, JavaDb, TextFileDb и т. Д.; поэтому я думаю, что ни одна запатентованная функция БД не должна использоваться для этого решения.
- Когда изменения объединяются с центральной базой данных, все записи должны иметь уникальные идентификаторы.
Для этого вопроса предположим простую таблицу с именем MyTable
с полями: ID
(первичный / уникальный ключ любого типа) Field1
, Field2
, Field3
Последнее не имеет значения.
Первое, что пришло на ум, - это использование GUID. Есть шаблон или практика, которая лучше этого или лучший способ выполнить это?
Изменить: Использование Microsoft .NET и ADO.NET
2 ответа
GUID работает.
Кроме того, это в значительной степени решенная проблема с Microsoft Sync Framework (вы не упомянули свою платформу разработки, поэтому здесь есть предположение). Он не привязан к какому-либо БД, типу данных или протоколу и может быть настроен для работы в различных автономных сценариях (хорошо, это начинает звучать как коммерческий...)
Как вы сказали, GUID приходят на ум по многим очевидным причинам, некоторые из которых описаны здесь. Первичные ключи: идентификаторы и идентификаторы GUID.
Возможно, вы захотите прочитать этот ответ также. Как лучше всего использовать первичные ключи в таблицах?