Здесь идут многословные дебаты, поэтому я хотел бы услышать другие мнения.
У меня много таблиц с уникальным идентификатором кластеризованного ПК. Является ли это хорошей идеей, здесь выходит за рамки (и она не изменится в ближайшее время).
Теперь база данных должна быть опубликована слиянием, и разработчики выступают за использование отдельного столбца rowguid вместо обозначения существующего PK как ROWGUIDCOL.
По сути, они говорят, что приложение никогда не должно вносить в свой домен что-то, что используется только для репликации (для них это всего лишь «материал DBA»).
С точки зрения производительности, я не вижу причин, почему я должен добавить новый столбец, чтобы сделать то, что я мог бы сделать с существующим. Более того, поскольку это всего лишь «материал для администраторов БД», почему бы не позволить администратору выбрать?
Я вроде понимаю точку зрения DEVs, но я все еще не согласен.
Мысли?
РЕДАКТИРОВАТЬ: Я просто хочу добавить, что я в меньшинстве в этой дискуссии, и DEV, подвергающие сомнению мою позицию, люди, которых я уважаю и которым доверяю. Это причина, почему я прибегаю к просьбе о мнениях.
Я мог бы также что-то упустить и мог неправильно понять их точку зрения.
источник
Ответы:
Я полностью согласен. Но ... первичный ключ используется не только для репликации (предположительно, приложение использует его каким-то образом). Аргумент не имеет смысла в этом контексте.
В любом случае, насколько мне известно, есть только 2 способа для этого "материала DBA" пересечь границу домена:
Если приложение использует запросы, которые ссылаются на
ROWGUIDCOL
столбец следующим образом:Я предполагаю, что ни у одного из ваших столбцов нет этого свойства, поэтому приложение не будет этого делать. (Кстати,
ROWGUIDCOL
это совершенно отдельная концепция от репликации. Просто так получилось, что репликация слиянием использует ее.)Столбец первичного ключа больше не будет обновляемым. Если приложение делает это и изменения не будут вноситься, чтобы использовать другой алгоритм, нет другого выбора, кроме как добавить новый столбец в таблицу, и, следовательно, обсуждение не требуется.
Помимо этого поведения,
ROWGUIDCOL
свойство является полностью прозрачным. Вы можете добавить его, и приложение никогда не узнает. Любой тип сценария репликации данных должен быть максимально прозрачным для приложений.источник
ROWGUIDCOL
в этом контексте (то есть не в выраженииCREATE TABLE
/ALTER TABLE
) устарело по крайней мере с версии SQL Server 2008 R2 (поиск FeatureID 182) в пользу$ROWGUID
.Согласен. Поскольку нет необходимости изменять значение PK, лучше использовать существующий столбец uniqueidentifier в качестве rowguidcol.
источник
«По сути, они говорят, что приложение никогда не должно вносить в свой домен что-то, что используется только для репликации (для них это всего лишь« материал DBA »)».
Но он не используется только для репликации. Это также (и уже) ваш ПК.
источник