As versões de software da Esri dos produtos ArcGIS Desktop 10.5.1 e ArcGIS Pro 2.0 incluem alterações fundamentais de comportamento para Global IDs gerenciados por geodatabase.
O que é um Global ID gerenciado por geodatabase?
Um campo Global ID gerenciado por geodatabase é uma coluna UUID não editável que o geodatabase é responsável por preencher. Um campo Global ID pode ser adicionado através da ferramenta de geoprocessamento Adicionar Global ID, ou através do Python utilizando o seguinte módulo arcpy:
AddGlobalIDs_management (in_datasets)
O que mudou?
No ArcGIS Desktop 10.5.1 e ArcGIS Pro 2.0, ocorre o seguinte comportamento:- Adicionar Global ID agora cria um índice exclusivo no campo Global ID para preservar a exclusividade entre as feições na tabela ou classe de feição subjacente.
Comportamento da Classe Versionada
- No Registro como Versionado, o ArcGIS descobre a coluna Global ID e cria um índice único na tabela base na coluna Global ID. Nenhum novo índice é criado nas tabelas Adiciona e Exclui.
- Adicionar Global IDs a uma classe registrada como versionada cria um novo índice único no campo Global ID. Nenhum novo índice é criado nas tabelas Adiciona e Exclui.
Comportamento da Classe de Feição Não Versionada
- Em Habilitar Arquivamento, a coluna Global ID é descoberta e cria um índice único nas colunas Global ID e GDB_TO_DATE
- Adicionar Global ID a uma classe habilitada arquivada cria um índice único nos campos Global ID e GDB_TO_DATE. A Tabela H obtém um índice não exclusivo na coluna Global ID.
O comportamento está resumido na tabela abaixo:| Tipo de Classe | Pré-condição | Operação | Tipo de Índice | Nomes do Índice | Colunas |
|---|
| Não versionado | | Adicionar Global ID | ÚNICO | UUID_<regid> | GLOBALID |
| Não versionado | com Global ID | Habilitar arquivamento não versionado | ÚNICO | UUID_<regid> | GLOBALID, GBD_TO_DATE |
| Não versionado | Arquivo -Habilitado | Adicionar Global ID | ÚNICO | UUID_<regid> | GLOBALID, GBD_TO_DATE |
| Não versionado | com Global ID | Registrar como Versionado | ÚNICO | UUID_<regid>** | GLOBALID |
| Não versionado | com UUID
| Registrar como Versionado | NÃO | NOVO | ÍNDICE |
| Não versionado | com Global IDs e índice com nome irregular no Global ID | Registrar como Versionado | ÚNICO | IRREGNAMEDINDEX** | GLOBALID |
| Versionado | | Adicionar Global ID | ÚNICO | UUID_<regid>** | GLOBALID |
| Versionado | com Global ID | Habilitar Arquivamento | ÚNICO | UUID_<regid>*** | GLOBALID |
| Versionado | Arquivo -Habilitado | Adicionar Global ID | ÚNICO | UUID_<regid>** | GLOBALID |
| Não versionado | com Global ID e restrição única do banco de dados | Registrar como Versionado | ÚNICO | UUID_<regid>** | GLOBALID |
** Nenhum novo índice nas tabelas Adiciona e Exclui
*** A tabela H é criada e obtém o índice NONUNIQUE na coluna GLOBALID

Por que isso mudou?
A criação de índice exclusivo em colunas GLOBAL ID é uma resposta direta a casos de corrupção de dados. Essa alteração garante que GLOBAL IDs duplicados não preencham a tabela base durante operações em classes versionadas e não versionadas habilitadas para arquivamento. Operações como sincronização e replicação dependem da exclusividade de GLOBAL IDs, e a imposição de GLOBAL IDs únicos no banco de dados é uma forte etapa preventiva para possíveis problemas de duplicação.
O custo dessa integridade de dados é a quantidade de tempo gasto na criação do índice (Adicionar Global ID / Registrar como Versionado / Habilitar Arquivamento). A plataforma DBMS subjacente agora é solicitada a criar uma estrutura nova e maior. Além disso, algumas plataformas DBMS exigem que os índices restantes na tabela também sejam recriados.