partners section

Выбора соответствующего первичного ключа для распределенной среды

Для таблиц, которые участвуют в добавочной синхронизации платформа Sync Framework требует, чтобы каждая строка быть однозначно определены. Это не является обязательным для клиента и синхронизации сервера моментального снимка. Как правило, строки идентифицируются по первичным ключом, который определен на сервере или сверстников базе данных. В распределенных средах, вы должны быть особенно осторожны, когда вы выберите тип столбца для использования в качестве первичного ключа. Первичные ключи должны быть уникальными во всех узлах, и не должны быть использованы повторно: Если строка будет удалена, первичный ключ этой строки не должны использоваться для другой строки. Если первичный ключ используется более чем на одном узле, первичный ключ столкновение может произойти. Это происходит с любым видом распределенной среде и не является ограничением платформы Sync Framework. В этом разделе описываются несколько вариантов, которые вы можете сделать для первичных ключей, и описывает их пригодности для распределенных средах.

Архитекторы баз данных часто выберите столбец автоприращения служить в качестве первичного ключа. Это свойство автоинкрементным (личность недвижимость в SQL Server) генерирует новое значение для каждой записи, которая вставлена ​​в таблицу. Это новое значение генерируется путем увеличения или уменьшения текущего значения (семя) на фиксированную сумму (шаг) и присвоения результат в строке, в настоящее время установлена. Столбцы автоприращения обычно используют компактные типы данных, такие как целые числа. Это может привести к более компактной кластерного индекса, более эффективных соединений, и менее IO, когда базовая таблица запрашивается.

Однако, поскольку свойства начального числа и приращения являются фиксированными и могут быть выбраны из конечного числа возможных значений, вероятность первичного ключа столкновения очень высока. Этот тип ключа подходит только для загрузки сценариев данных кэширования. В этих сценариях, сервер или назначенный сверстников должен быть единственным узлом, который генерирует новые значения первичного ключа. Таким образом, эти значения гарантированно быть уникальным для всех узлов в топологии. Столбцы автоприращения подходят также для загрузки только для и двунаправленных сценариев, если операции вставки происходят только на одном узле. В этих случаях операции вставки обычно возникают только на сервере или назначенного равному, и операции обновления, и, возможно, удалить операций, происходить в одном или нескольких клиентов. Если вам требуется операции вставки в более чем одном узле, вы должны использовать один из других подходов, описанных далее в этом разделе.

Знайте, что, когда таблица в компактном базе данных SQL Server инициализируется посредством синхронизации, семя и приращение его столбцов идентификаторов всегда установлены на 0 и 1, соответственно, независимо от того, как они установлены в базе данных сервера. Если вам нужно вставить строки локально в клиентской базе данных, Вы должны сначала установить семя личности и приращение в соответствующие значения или вручную указать значение столбца идентификаторов, в противном случае новые строки будут иметь одинаковые значения личности и вставки строк не удастся. Семя идентичность и приращение может быть установлен с помощью следующего запроса, который устанавливает начальное значение до 10 и приращение до 1: