ПК для веб, автоинкремент против стиля UUID, который лучше и почему - PullRequest
0 голосов
/ 04 марта 2010

Какова реальная разница между каждым?

Я думаю, что auto inc легко взломать против uuid

Uuid медленнее автоинкремента в запросе ко многим записям, но есть ли в этом огромная разница?

Ответы [ 4 ]

3 голосов
/ 04 марта 2010

Первичный ключ очень важен с точки зрения реляционной модели

  • Уникальность должна быть проверена быстро
  • используется в другой таблице в качестве внешнего ключа
  • используется для присоединения

Чем меньше ПК, тем лучше. Вот почему числовой ПК является лучшим.

Если вы обеспокоены тем, что его легко "взломать", вы можете добавить дополнительный UUID в качестве естественного ключа

  • используется только для «прямого доступа» к строке

Это то, что я видел в нескольких проектах, и это сработало как шарм.

1 голос
/ 04 марта 2010

некоторые мысли:

  • auto-inc: БД обеспечивает уникальный идентификатор, но вам придется извлечь его или потерять «контакт» с записью данных, которую вы только что вставили.
  • UUID: должен быть создан «снаружи» (не на сервере БД, может быть на сервере приложений). Идентификатор известен, а ссылка на вставленную запись существует, но (очень мала, зависит от uuid-uuid uuid) риск столкновения при вставке.
0 голосов
/ 07 апреля 2010

Позаботьтесь о длине колонки PK ... UUID и GUID - это очень длинные ... строки. INT или даже колонка BIGINT с автоматическим вводом может обеспечить уникальность в гораздо меньшем пространстве.

ВНИМАНИЕ, что у столбцов автоинкремента есть несколько проблем, связанных с управлением таблицами. Если вы усекаете / отбрасываете создание таблиц, то автоматическое увеличение будет трудно поддерживать. ТАКЖЕ, только 1 столбец автоинкремента в MySQL разрешен для одной таблицы.

Если ваши данные это позволяют, используйте какой-то тип HASH, полученный из данных, для индексации и производительности.

0 голосов
/ 04 марта 2010

Сам по себе инкрементный идентификатор не «легко взломать», он просто предоставляет точки входа, которые скрыты (но не полностью скрыты) при использовании большого случайного идентификатора. Для того, чтобы существовала реальная опасность, все еще должно быть плохо внедренное и эксплуатируемое программное обеспечение. Как видно из URL в адресной строке, этот сайт использует добавочные идентификаторы без проблем.

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

Почему бы не использовать оба? Числовой ключ автоинкремента для скорости в индексировании и отношениях; случайный UID для внешнего доступа.

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