Хотя я полностью согласен с ответом полковника Шрапнеля, есть несколько случаев, когда длинные «загадочные» идентификаторы способствуют безопасности, а иногда даже масштабируемости. Sharelockers (RapidShare и друзья) обычно используют структуру /ID/Filename
в своих URL-адресах, чтобы повысить безопасность из-за неясности, для кого-то было бы слишком легко протестировать все целые или общие имена файлов и получить доступ к конфиденциальной информации.
Некоторые люди также применяют какой-то алгоритм контрольной суммы к своим идентификаторам базы данных, что затрудняет кому-либо выяснение базовой структуры и «скрытие» определенных видов информации: держу пари, что многие люди не хотят платить за что-то онлайн если URL для заказа был /order/2/
например. Использование контрольных сумм также может способствовать повышению производительности, поскольку вы можете игнорировать недействительные идентификаторы, даже не обращаясь к базе данных (полезно, когда кто-то перебирает ваши URL).
Длинные идентификаторы способствуют масштабируемости, в том смысле, что они предоставляют более широкий диапазон возможных чисел ( Slashdot стал жертвой предположения "int (11) более чем достаточно для всех" дважды - извините, не могу найти старую историю), и именно поэтому вы видите, что Twitter и друзья используют разные подходы.
Когда вы используете более широкий идентификатор, вы также можете хранить больше информации, такой как метки времени, IP / имя хоста, создавшего запись базы данных, и т. Д., Что может иметь решающее значение при выполнении настройки распределенной базы данных. Посмотрите документацию MongoID class , чтобы лучше понять, как она работает.