Есть ли альтернатива UUID / GUID, которые не вызывают проблем с производительностью базы данных? - PullRequest
0 голосов
/ 01 ноября 2018

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

1 Ответ

0 голосов
/ 01 ноября 2018

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

Позвольте мне объяснить, почему это не очень хороший пост в блоге. Он говорит:

GUID / UUID очень случайны. Поэтому ВСТАВКА в указатель означает много прыжков.

Guid - это на самом деле просто 16-байтовое шестнадцатеричное число; так что я мог бы придумать наивный индекс, в котором можно было бы выполнить одну вставку за постоянное время, просто создав массив 32/16, который вы могли бы проходить через цифру за цифрой. Таким образом, вставка N элементов с моим наивным индексом может быть выполнена за время Log (N). Аргумент в сообщении блога ужасен. Я не уверен, что быстрая вставка GUID есть, но «случайность» не имеет ничего общего с алгоритмической сложностью.

Вот хороший пост в блоге с хорошими ссылками:

https://blog.codinghorror.com/primary-keys-ids-versus-guids/

Мне особенно нравится эта ссылка:

http://web.archive.org/web/20150511162734/http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html

Хорошее обсуждение компромиссов различных ключей.

...