Есть ли какие-либо проблемы с использованием NEWID () для ключа API? - PullRequest
2 голосов
/ 23 октября 2010

Я работаю над небольшим фрагментом, который сгенерирует ключ API с помощью NEWID () сервера SQL. Ключ будет использоваться для доступа к определенным частям нашего веб-приложения и будет передан через URL. Ключ генерируется при создании нового потребителя API (в сохраненном процессе). Ключ уникален для каждого потребителя. Хотя ожидается, что первоначальное число потребителей будет относительно небольшим, оно будет расти со временем, но с относительно низкой частотой.

Некоторые из ограничений:

  • Ключ должен быть сгенерирован на уровне вставки
  • Должно быть уникальным для каждого потребителя
  • Производительность, как всегда, важна


Есть ли проблемы с этим подходом - безопасность, производительность или другое? Есть ли лучший способ добиться того же результата?

Ответы [ 2 ]

1 голос
/ 23 октября 2010

С этим не должно быть проблем.NEWID() генерирует GUID, который гарантированно будет уникальным в вашей системе.

Вы не должны использовать NEWSEQUENTIALID (), так как его легко угадать, как отмечено здесь , но предупреждениеприведенный в документации NEWID (), поэтому я предполагаю, что у него нет такой же проблемы.Это означает, что не должно быть проблем с безопасностью.

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

0 голосов
/ 23 октября 2010

Я сделал это без проблем.INSERT - относительно дорогая операция, накладные расходы на NEWID() сравнительно тривиальны.

...