2010-09-14 3 views
0

У меня есть веб-приложение, в котором пользователи могут входить в систему и читать свои сообщения. Я использую использовать первичный ключ ID в базе данных для доступа и обработки сообщений пользователей через сайт, таких как (viewmessage/3), но я быстро понял, что я не хотел этого делать, поскольку он предоставлял информацию всем пользователям о том, сколько потенциальных сообщения хранятся в базе данных. Такая же идея с пользователями, чтобы просмотреть профиль пользователей, который я использую для использования их ID, но который показывает, сколько пользователей на сайте ... Итак, что я сделал, добавлен новый столбец в каждой таблице UrlKey, этот ключ является varchar (16), который состоит из 16 уникальных случайных чисел, которые я использую для сопоставления идентификатора на стороне сервера.уникальная база данных urlkey вместо id

Мой вопрос сейчас, 16 слишком много или обычная практика (16^10), следует ли использовать только ints или сочетание символов int и ascii, любые рекомендации по скорости, безопасности и т. Д. ...? Thanks alot

ответ

1

Большинство баз данных используют GUID или UUID для уникальной строки вместо автоматического увеличения. Оба они могут быть сохранены как целое число 16 байтов 128, но 32 символа.

Я бы использовал GUID или UUID. Тогда вы всегда будете уникальны.

+0

Я хочу использовать этот «GUID» на сайте в моем URL-адресе для доступа к определенным областям, факт, что это 32 символа .... может стать проблемой? Вы просто заставило меня понять, что моя система не масштабируема. У меня есть цикл, который генерирует случайный ключ, если текущий ключ уже существует, поэтому я мог бы застрять в этом цикле довольно долго, если моя запись будет чрезвычайно большой. – user391986

+0

@ user391986 Я не вижу, как проблема 32 символов. И зачем откатывать свой собственный уникальный идентификатор, когда это было сделано для вас. У каждой основной платформы был бы метод генерации GUID или UUID. –

1

16^10 - огромное количество, то есть более 1 триллиона сообщений.

Если вы используете смешанные буквы и цифры, это дает вам 62 символа для работы, и с 5 символами у вас уже есть комбинации 62^5, это почти 1 миллиард комбинаций.

+0

Первоначально я использовал микс, но потом я подумал, может ли это представлять проблемы безопасности, если код вводится или так, я не знаю достаточно, поэтому решил играть в него безопасно и разрешать номера. – user391986