Respuesta
Las versiones de software de Esri de los productos ArcGIS Desktop 10.5.1 y ArcGIS Pro 2.0 incorporan cambios fundamentales en comportamiento de los Id. globales administrados en una geodatabase.
¿Qué es un Id. global administrado en una geodatabase?
Un campo Global ID administrado en una geodatabase es una columna UUID no editable que la geodatabase debe rellenar. El campo Global ID se debe agregar mediante herramienta de geoprocesamiento Agregar Id. global, o mediante Python con el siguiente módulo de ArcPy:
AddGlobalIDs_management (in_datasets)
Cambios introducidos
En ArcGIS Desktop 10.5.1 y ArcGIS Pro 2.0, el comportamiento es el siguiente:
- Agregar Id. global ahora crea un índice único en el campo Global ID para preservar la unicidad entre entidades de una tabla o clase de entidad subyacentes.
Comportamiento de clases versionadas
- En Registro como versionado, ArcGIS descubre la columna Global ID y crea un índice único en la tabla base de la columna Global ID. No se crea ningún índice nuevo en las tablas Adiciones ni Borrados.
- Agregar Id. global a una clase registrada como versionada crea un nuevo índice único en el campo Global ID. No se crea ningún índice nuevo en las tablas Adiciones ni Borrados.
Comportamiento de las clases de archivado no versionadas
- En Habilitar archivado, la columna Global ID se descubre y se crea un índice único en las columnas Global ID y GDB_TO_DATE
- Agregar Id. global a una clase habilitada y archivada crea un índice único en los campos Global ID y GDB_TO_DATE. La tabla H obtiene un índice no único en la columna Global ID.
El comportamiento se resume en la tabla que aparece a continuación:
Tipo de clase | Condición previa | Operación | Tipo de índice | Nombres de índice | Columnas |
---|
No versionada | | Agregar Id. global | UNIQUE | UUID_ | GLOBALID |
No versionada | Con Id. global | Habilitar archivado no versionado | UNIQUE | UUID_ | GLOBALID, GBD_TO_DATE |
No versionada | Archivado habilitado | Agregar Id. global | UNIQUE | UUID_ | GLOBALID, GBD_TO_DATE |
No versionada | Con Id. global | Registrar como Versionado | UNIQUE | UUID_** | GLOBALID |
No versionada | Con UUID | Registrar como Versionado | NO | NEW | INDEX |
No versionada | Con Id. global e índice con denominación irregular en Id. global | Registrar como Versionado | UNIQUE | IRREGNAMEDINDEX** | GLOBALID |
Versionado | | Agregar Id. global | UNIQUE | UUID_** | GLOBALID |
Versionado | Con Id. global | Habilitar archivado | UNIQUE | UUID_*** | GLOBALID |
Versionado | Archivado habilitado | Agregar Id. global | UNIQUE | UUID_** | GLOBALID |
No versionada | Con Id. global y límite único de base de datos | Registrar como Versionado | UNIQUE | UUID_** | GLOBALID |
** Ningún índice nuevo en las tablas Adiciones ni Borrados
*** La tabla H se crea y obtiene el índice NONUNIQUE en la columna GLOBALID
¿Por qué ha cambiado?
La creación de índices únicos en las columnas Global ID es una respuesta directa a los casos de datos dañados. Este cambio garantiza que los Id. globales duplicados no rellenen la tabla base durante las operaciones en clases con archivado habilitado versionadas y no versionadas. Operaciones tales como la sincronización y la replicación dependen de la unicidad de los Id. globales, por lo que imponer los Id. globales únicos de la base de datos es un sólido paso preventivo ante posibles problemas de duplicación.
La contrapartida de esta integridad de datos es la cantidad de tiempo que se requiere en la creación de índices (Agregar Id. global / Registrar como versionada / Habilitar archivado). La plataforma DBMS subyacente se ve obligada a crear una estructura nueva y más grande. Además, algunas plataformas DBMS requieren también la regeneración de los índices restantes de la tabla.