Mysql - нужен ли уникальный индекс для столбца uuid? - PullRequest
0 голосов
/ 26 января 2020

У меня есть таблица, в которой хранятся пользовательские файлы, например изображения. Он имеет первичный ключ с автоматическим приращением, и по URL легко угадать, каким будет следующий / предыдущий идентификатор, например mydomain/file/12. Несмотря на то, что у меня есть система безопасности для предотвращения доступа неавторизованного пользователя к чужим файлам, я бы предпочел иметь более сложный идентификатор URL, который трудно угадать.

В таблице будет много вставок / удалений, поэтому я Мы привыкли использовать идентификатор автоинкремента для первичного ключа, в отличие от использования uuid в качестве первичного ключа из-за связанных с этим проблем с производительностью.

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

Любой совет приветствуется.

1 Ответ

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

Если вы хотите настоять на том, чтобы столбец был уникальным, то создайте для него уникальный индекс / ограничение.

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

При этом, если производительность имеет первостепенное значение, то вы можете решить - по существу - отключить «ручные» вставки и перед go уникальный индекс. Это будет компромисс, основанный на потребностях в производительности.

...