Aliases de armazenamento
Saiba mais sobre a função que os aliases de armazenamento desempenham na manipulação de dados e na criação de campos no ServiceNow AI Platform.
Entender os aliases de armazenamento é importante para o gerenciamento eficaz de dados e a personalização de esquema no ServiceNow AI Platform, Particularmente ao lidar com hierarquias de tabela complexas, como as da tabela Tarefa [task].
Por padrão, os administradores têm acesso à tabela Aliases da coluna de armazenamento [sys_storage_alias] em uma instância. No entanto, os processos transacionais em relação a esta tabela não podem ser executados por um administrador na interface do usuário.
Modelos e hierarquia de tabela
A compreensão do alias de armazenamento requer conhecimento das hierarquias de tabela na tabela Tarefa [tarefa], que envolve dois modelos: Tabela por hierarquia e Tabela por classe.
- Tabela por hierarquia
- Este modelo usa uma única tabela física, a tabela Tarefa [tarefa], que apresenta uma hierarquia planificada em que todas as colunas na hierarquia de tarefas existem somente na tabela de tarefas. Por exemplo, os campos relacionados a solicitações de mudança não estão em uma tabela Solicitação de mudança separada [change_request], mas estão integrados à tabela Tarefa [task]. Você pode verificar se uma tabela é Tabela por hierarquia verificando o campo Modelo de extensão na tabela Tabelas [sys_db_object]. Se o primário da tabela for um secundário direto da tabela Tarefa [task], a tabela usará Tabela por hierarquia.
Uma tabela estendida herda a hierarquia de seu pai. Por exemplo, a tabela IMAC [change_request_imac] é uma tabela secundária da tabela Solicitação de mudança [change_request], que estende a tabela Tarefa [task]. Como a tabela Solicitação de mudança [change_request] é Tabela por hierarquia, o modelo de tabela IMAC [change_request_imac] também é Tabela por hierarquia. As tabelas legadas, como a tabela Incidente [incidente], a tabela Solicitação de mudança [change_request] e a tabela Problema [problema], fazem parte da hierarquia da tabela Tarefa [tarefa] planificada.
- Tabela por classe
- Este modelo se aplica a tabelas que existem fisicamente no banco de dados. Ele é usado para novas tabelas que se estendem diretamente da tabela Tarefa [task] quando a contagem de linhas da tarefa excede 1 milhão de linhas. Ao contrário da Tabela por hierarquia, a Tabela por classe não usa glomming porque não opera em uma hierarquia planificada.
Definição do alias de armazenamento
Um alias de armazenamento é criado para cada campo em uma tabela em uma instância. Familiarize-se com os campos-chave na tabela Aliases da coluna de armazenamento [sys_storage_alias].
- Nome de Elemento
- Indica como o campo aparece para os usuários, o que é importante para interações e scripts da interface do usuário.
- Alias de Armazenamento
- Indica a coluna física exata em que os dados de um campo estão armazenados. O valor do alias de armazenamento é usado em combinação com o valor table_name para identificar quais dados manipular. O valor do alias de armazenamento é a coluna física real na tabela Tarefa [task].
- Nome da tabela de armazenamento
- Especifica a tabela física que hospeda o elemento. Para tabelas Tabela por hierarquia, o valor é sempre tarefa. Para tabelas Tabela por classe, o valor é o nome da tabela física.
- Tabela
- Especifica a classe lógica à qual cada elemento se vincula na tabela Tarefa física [task]. O elemento Tabela contém o valor table_name que é o discriminador de classe.
Neste exemplo, o alias de armazenamento para o elemento cab_delegate é a_ref_2 e a tabela de armazenamento físico em que os dados são armazenados é tarefa. O exemplo descreve 10 elementos lógicos em diferentes classes lógicas na Tarefa [tabela] que são vinculados ao mesmo alias a_ref_2 na tabela Tarefa física [tarefa].
Os elementos irmãos são glommed, o que significa que eles compartilham uma coluna física na tabela Tarefa [task]. Você pode consultar dados do elemento lógico cab_delegate usando uma consulta como:
SELECT a_ref_2 from task WHERE sys_class_name='change_request' AND a_ref_2 IS NOT NULL
A consulta especifica dados na coluna física a_ref_2. O discriminador de classe change_request é usado em combinação com o alias de armazenamento a_ref_2 para consultar o elemento lógico cab_delegate da classe lógica change_request na tabela Tarefa física [task].
A convenção de nomenclatura para campos criados nas tabelas físicas reais pode variar dependendo do tipo de campo. Neste exemplo, a_ref_2 é um alias na tabela Tarefa [task] que contém valores para campos de referência.
Uso e funcionalidade
Os aliases de armazenamento atendem a várias finalidades.
- Mapeamento
- Os aliases mapeiam elementos lógicos (Tabela por hierarquia) ou elementos físicos (Tabela por classe) para as colunas físicas reais no banco de dados de back-end. O elemento lógico pode ser transformado em uma coluna física maior que max_length do elemento lógico.
- Glomming
- Os aliases permitem que vários elementos irmãos compartilhem uma única coluna física em uma tabela por modelo de hierarquia.
- Mapeamento de rótulo
- Os aliases associam registros sys_documentation (rótulo) aos respectivos elementos, melhorando a visibilidade em formulários, relatórios e exibições de lista.
Regras e restrições
- Dois elementos lógicos na mesma classe não podem compartilhar uma coluna física. Por exemplo, dois campos de cadeia de caracteres criados na tabela Incidente [incidente] não podem ser mapeados para a mesma coluna física no banco de dados.
- Um elemento primário e seu secundário não podem compartilhar uma coluna física. Por exemplo, um campo criado na tabela Incidente [incidente] não pode ser mapeado para uma coluna física quando essa coluna física já está mapeada para um campo na tabela Tarefa [tarefa].
- Apenas elementos semelhantes podem compartilhar uma coluna física. Por exemplo, um campo de referência na tabela Solicitação de mudança [change_request] e um campo de referência na tabela Incidente [incidente] e podem ser mapeados para a mesma coluna física.
- Os campos criados diretamente na tabela Tarefa [task] (em que sys_class_name é "task") não podem ser glommed.