GUID VS Автоинкремент.(В комфорте мудрый) - PullRequest
1 голос
/ 06 сентября 2011

Через некоторое время мой системный администратор по ошибке восстановил мою базу данных до гораздо более ранней точки.
Через 3 часа мы заметили это, и за это время было создано 80 новых строк ( автоинкремент с зависимостью от внешних ключей).
Таким образом, на данный момент у нас было 80 разных клиентов с одинаковыми идентификаторами в двух таблицах, которые нужно было объединить.
Я не помню, как, но мы решили это, но это заняло много времени.
Сейчас я проектирую новую базу данных, и моя первая мысль - использовать индекс GUID, хотя этот вариант использования встречается редко.

Мой вопрос: как вы ладите с такой длинной строкой, как ваше удостоверение личности?

Я имею в виду, когда 2 программиста говорят о клиенте, можно сказать:
«Привет. У нас проблема с клиентом 874454».
Но как вы делаете это простым с GUID, это действительно проблема, которая может вызвать некоторые проблемы и сбой.
Спасибо

Ответы [ 2 ]

3 голосов
/ 07 сентября 2011

GUID может создать больше проблем, чем решить, если вы не используете репликацию.Во-первых, вам нужно убедиться, что они не являются кластеризованным индексом (по крайней мере, по умолчанию для PK в SQL Server), потому что вы действительно можете снизить производительность вставки.Во-вторых, они длиннее целых и поэтому занимают не только больше места, но и делают соединения медленнее.Каждое соединение в каждом запросе.

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

Вы можете создать решение для аудита.Таким образом, вы можете легко оправиться от всевозможных ошибок.И напишите код заранее, чтобы сделать восстановление.Тогда это относительно легко исправить, когда что-то пойдет не так.Честно говоря, я бы никогда не позволил создать базу данных, содержащую критические данные компании, без какой-либо формы аудита.Это просто слишком опасно, чтобы не

Или вы могли бы даже иметь готовый сценарий, чтобы переместить записи во временное место и затем снова вставить их с новым идентификатором (и обновить идентификаторы в дочерних записях до нового).Вы сделали это один раз, dba должен был создать скрипт (и поместить его в систему контроля версий), чтобы он был доступен в следующий раз, когда вам нужно будет сделать подобное исправление.Если ваш dba настолько некомпетентен, что он не создает и не сохраняет подобные сценарии, то избавьтесь от него и наймите того, кто знает, что он делает.

0 голосов
/ 06 сентября 2011

просто показать префикс в большинстве просмотров.Это то, что делают DVCS, так как большинство из них идентифицируют большинство объектов с помощью шестнадцатеричного хеш-кода.

(OTOH, я знаю, что во многих кругах модно использовать UUID для первичных ключей; но это займет намного больше, чем несколькострашные истории, чтобы убедить меня)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...