В каких случаях использовать autoincrement ID а в каких GUID?
1 ответов
Речь только о базах данных? Много разных критериев ... Нужно решить, что более важно в вашем проекте и исходя из этого выбирать тип данных.
Плюсы Autoincrement:
- Более читабельное значение идентификатора - проще использовать в запросах, выполняемых вручную (при отладке приложения, например)
- Компактная запись, меньше места на диске
Минусы Autoincrement
- На распределенных системах требуется дополнительная настройка базы данных (стартовые значения последовательности, шаг) для предотвращения пересечения значений
- На большинстве серверов требуется выполнение отдельной команды для получения значения идентификатора вставленной записи
Плюсы GUID:
- Не требуется получение значения ключа из базы данных после вставки записи
- Не требуется настройка базы данных в распределенных системах
- Проще импорт записей из внешних источников (гарантированно не будет пересечения ключей даже при использовании разветвленной структуры данных)
Минусы GUID:
- Не все серверы поддерживают тип данных GUID, можно хранить в виде строк, но операции над записями будут выполняться гораздо медленнее
- Сложно использовать при отладке
Есть еще и другие решения, которые тут не упоминались. Например можно использовать sequences для получения уникальных значений ключей. Решение ближе к автоинкременту, но в распределенных системах настраивать приходится меньше.
После того, как получили распространение ORM инструменты технически применять любой из видов значений ключей одинаково просто.
Для себя я делаю такой вывод: В больших распределенных системах лучше использовать GUID, в локальных Autoincrement. Autoincrement в процессе разработки мне нравится гораздо больше - проще отлаживать запросы :)