Hay un largo debate aquí, así que me gustaría escuchar otras opiniones.
Tengo muchas tablas con PK de clúster de identificador único. Si esta es una buena idea está fuera de alcance aquí (y no va a cambiar en el corto plazo).
Ahora, la base de datos debe ser publicada y los DEV están abogando por el uso de una columna separada de guias de fila en lugar de marcar la PK existente como ROWGUIDCOL.
Básicamente, dicen que la aplicación nunca debería traer a su dominio algo que se usa solo para la replicación (es solo "material DBA" para ellos).
Desde el punto de vista del rendimiento, no veo ninguna razón por la que deba agregar una nueva columna para hacer algo que podría hacer con una existente. Además, dado que son solo "cosas de DBA", ¿por qué no dejar que el DBA elija?
Entiendo un poco el punto de los DEV, pero aún no estoy de acuerdo.
Pensamientos?
EDITAR: Solo quiero agregar que soy minoría en este debate y que los DEV que cuestionan mi posición son personas a las que respeto y en las que confío. Esta es la razón por la que recurrí a pedir opiniones.
También podría estar perdiendo algo y podría haber entendido mal su punto.
fuente
Respuestas:
Concuerdo completamente. Pero ... la clave primaria no solo se usa para la replicación (presumiblemente la aplicación la usa de alguna manera). El argumento no tiene sentido en este contexto.
En cualquier caso, hasta donde yo sé, solo hay 2 formas para que estas "cosas de DBA" crucen el límite del dominio:
Si la aplicación está utilizando consultas que hacen referencia a la
ROWGUIDCOL
columna de esta manera:Supongo que ninguna de sus columnas tiene esta propiedad todavía, por lo que la aplicación no estaría haciendo esto. (Por cierto,
ROWGUIDCOL
es un concepto completamente separado de la replicación. Resulta que la replicación por fusión lo usa).La columna de clave principal ya no sería actualizable. Si la aplicación está haciendo esto y no se van a realizar cambios para utilizar otro algoritmo, no hay más remedio que agregar una nueva columna a la tabla y, por lo tanto, no es necesario discutirlo.
Aparte de esos comportamientos, la
ROWGUIDCOL
propiedad es completamente transparente. Puede agregarlo, y la aplicación nunca lo sabría. Cualquier tipo de escenario de replicación de datos debe ser lo más transparente posible para las aplicaciones.fuente
ROWGUIDCOL
en ese contexto (es decir, no en una declaraciónCREATE TABLE
/ALTER TABLE
) ha quedado en desuso desde al menos SQL Server 2008 R2 (busque FeatureID 182) a favor$ROWGUID
.Estoy de acuerdo. Siempre que no sea necesario que el valor de PK pueda cambiar, sería mejor usar la columna de identificador único existente como rowguidcol.
fuente
"Básicamente, dicen que la aplicación nunca debería traer a su dominio algo que se usa solo para la replicación (es solo" material DBA "para ellos)".
Pero no se usa solo para la replicación. También es (y ya) tu PK.
fuente