UUID в сравнении с номером автоинкремента для первичного ключа - PullRequest
14 голосов
/ 01 марта 2011

Почему я должен выбрать UUID вместо номера автоинкремента для первичного ключа моей сущности?Какие плюсы и минусы?

Ответы [ 3 ]

11 голосов
/ 09 апреля 2011

У Андрея и Mjg были хорошие моменты, но я бы добавил существенную проблему, связанную с производительностью.

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

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

8 голосов
/ 01 марта 2011

UUID глобально уникальны и могут генерироваться параллельно без связи между кластерными серверами БД. Так что «Идентификаторы объектов более синергетичны с шардированием и распределением». . UUID обычно хранятся в 128 битах.

Автоинкрементные целые числа более удобны для пользователя (ну, в любом случае, короче и более запоминаемы) и автоматически позволяют сортировать по порядку вставки. Целые числа обычно хранятся в 32 или 64 битах.

4 голосов
/ 01 марта 2011

Основное преимущество в том, что вы можете генерировать их самостоятельно.Минус в том, что он больше.

...