MD5 хэш как искусственные ключи - PullRequest
0 голосов
/ 16 ноября 2010

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

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

Ответы [ 3 ]

4 голосов
/ 16 ноября 2010

Хеш позволяет более эффективно сравнивать потенциально большие значения данных - например, в соединениях. то есть сравнение HASH (LargeObjectB) = HASH (LargeObjectB). Если хэшированные значения являются документами в таблице системы управления документами, например, тогда может быть более эффективно сравнивать хэши, чем документы.

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

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

2 голосов
/ 16 ноября 2010

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

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

1 голос
/ 16 ноября 2010

Уникальность между серверами? Использование простых целых чисел не сработает в этой ситуации.

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