Глобальные уникальные идентификаторы SQL Server - PullRequest
3 голосов
/ 26 января 2009

Когда или почему нужно будет использовать глобальные уникальные идентификаторы вместо традиционного столбца идентификаторов? Пожалуйста, помогите мне понять

Ответы [ 4 ]

4 голосов
/ 26 января 2009

Одной из причин является репликация и масштабируемость : если существует несколько несогласованных писателей, у них - по определению - нет канала для связи для создания уникальных int s для первичного ключа. Идентификаторы GUID не должны быть уникальными.

3 голосов
/ 26 января 2009

В дополнение к элементам репликации, упомянутым в других ответах ...

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

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

0 голосов
/ 26 января 2009

Есть (по крайней мере) две ситуации, когда Guid действительно полезны.

  1. При репликации или любой другой установке нескольких сайтов, где базы данных будут объединены, Guid значительно облегчит работу. В этих ситуациях также можно использовать клавиши Int, но Guid проще и создает меньше проблем.
  2. Генерация ключей на стороне клиента перед вставкой без необходимости возврата в БД может быть очень полезна.
0 голосов
/ 26 января 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...