Пришло время добавить новый шард. Действия? Перебалансируем всё? А если не хотим даунтайм на перебалансирование - то требуем места на дисках вдвое больше?
Как передаёте логин при последующих запросах? После авторизации?
И, главное, - если считаем хэш от логина - зачем вам uuid или хэш первичным ключом? Зачем вам вообще его хранить? Вы по нему вовсе не ищете, вы его вычисляете от логина и так понимаете куда с этим логином идти.
Потому что вы упустили что я говорю про отдельную базу для авторизации. Логин, пароль, ссылка на шард. Пишется эта база только при регистрации и столь же редком изменении паролей.
А там окажется что данные чуть ли не с запуска проекта уже сильно связанные и легко шардироваться всё равно не можете. Или что шардировать надо было вовсе по другому признаку.
Обычным bigint.
Вон как выше в точности: есть один проект, где это оказалось полезно. Давайте не будем думать что это совершенно не про наш проект, а тупо сделаем так же, ведь те ребята так сделали и вон как выросли.
Самое интересное происходит когда нет осмысленной причины даже не использовать штатный в субд тип данных под uuid, а пихают в varchar(255) какой-нибудь или сразу в text.
Замечательный пример мужественного решения проблем. Вот только раз это функция субд - то и в чём проблема с аналогичным простым сиквенсом?
Если поле используется как ключ партицирования в шарде - то это явно задокументировано и вас будут больно бить по рукам за любые попытки запросов без использования ключа партицирования. И узнаете как это поле используется очень быстро, как и почему оно такое получилось. Как правило именно "получилось", исторически, а сейчас дорого и просто не очень нужно менять.
- без особой пользы в разы увеличить объём хранимых данных. Тем более если использовать строки.
- дополнительно увеличить стоимость записи индексов (значения случайны = значения пишутся в случайные места дерева, вы постоянно "пачкаете" разные страницы)
Но если это ключ партицирования - то вы бы и так уже знали почему используется не число.
Блин не сразу заметил, вы в обоих случаях делаете запросы через делфи? Тогда это настройки окружения делфи и sql server тут не при чем