Nivelamento de tabela
O nivelamento de tabela armazena uma hierarquia de tabelas relacionadas como uma tabela em um banco de dados relacional.
Modelos de extensão
O sistema oferece esses modelos de extensão para armazenar uma hierarquia de tabela em um banco de dados relacional.
| Modelo de extensão | Nivelar tabelas? |
|---|---|
| Tabela por classe | Não |
| Tabela por hierarquia | Sim |
| Tabela por partição | Sim |
Tabela por classe
O modelo de extensão Tabela por classe armazena cada tabela da hierarquia em sua própria tabela física no banco de dados relacional. Cada tabela física usa o prefixo da tabela de origem e cada uma armazena uma classe diferente de registros. Um exemplo do modelo de extensão Tabela por classe é a tabela Ativo [alm_asset] e suas tabelas secundárias: Hardware [alm_hardware], Consumível [alm_consumable], Instalação [alm_facility] e Licença de software [alm_license]. A tabela primária da hierarquia, Ativo, armazena uma cópia de cada registro em suas tabelas descendentes.
Para encontrar registros no modelo de extensão Tabela por classe, o sistema consulta registros de várias tabelas e une os resultados. Por exemplo, ao pesquisar hardware em uma instalação relacionada, o sistema deve associar os resultados das tabelas Hardware, Instalação e Ativo.
As junções de tabela causam um gargalo de desempenho em bancos de dados relacionais. Quanto mais classes uma consulta incluir, pior será o desempenho da consulta. Portanto, qualquer consulta de registros da parte superior da hierarquia de tabelas tem o pior desempenho porque requer a junção de todas as tabelas descendentes.
O sistema usa o modelo de extensão Tabela por classe por padrão ao criar tabelas. A maioria das tabelas do sistema também usa o modelo de extensão Tabela por classe, já que não há benefício de desempenho em nivelá-las.
Tabela por hierarquia
O modelo de extensão Tabela por hierarquia armazena uma hierarquia de tabela inteira em uma única tabela física plana no banco de dados relacional. A tabela física é nomeada após a tabela primária da hierarquia, como Tarefa. A tabela física contém todos os registros da hierarquia de tabelas e atribui um valor de coluna de nome de classe a cada tabela descendente da hierarquia. O sistema usa o nome da tabela de origem como o valor do nome da classe. Por exemplo, os registros de tarefa podem ter nomes de classe como Mudança, Incidente ou Problema.
Para encontrar registros em uma hierarquia de tabelas, o sistema consulta a tabela física e usa a coluna de nome da classe para restringir os resultados. Como essas consultas não exigem a junção de resultados de várias tabelas, o sistema oferece melhor desempenho de pesquisa.
O sistema usa o modelo de extensão Tabela por hierarquia para a hierarquia da tabela de tarefas nos bancos de dados MySQL. Outras tabelas usam o modelo de extensão Tabela por classe porque não há benefício de desempenho em nivelá-las. Para usar Tabela por hierarquia em um banco de dados Oracle, entre em contato com o Suporte técnico.
Tabela por partição
O modelo de extensão Tabela por partição armazena uma hierarquia de tabelas inteira em uma única tabela lógica plana no banco de dados relacional. Cada tabela lógica pode ter várias tabelas de armazenamento físico chamadas partições que a suportam. Cada partição otimiza os recursos de banco de dados disponíveis para uma tabela física, como a contagem de colunas, a contagem de índices e o tamanho da linha. O sistema adiciona uma partição sempre que a tabela lógica precisa de recursos adicionais de banco de dados relacional.
Cada tabela lógica é nomeada após a tabela primária da hierarquia e cada partição física de suporte consiste no nome lógico mais um nome de partição. Por exemplo, a tabela Item de configuração base [cmdb] começa como uma tabela lógica sem partições. Suponha que os itens de configuração de hardware consumam recursos de banco de dados suficientes para que o sistema crie uma partição chamada cmdb $ par1 para armazená-los. Posteriormente, os itens de configuração do computador podem consumir recursos de banco de dados suficientes para garantir que o sistema crie uma segunda partição chamada cmdb $ par2 para armazenar esses registros.
Em cada tabela lógica, o sistema atribui um valor de coluna de nome de classe a cada tabela descendente da hierarquia. Por exemplo, na tabela lógica Item de configuração base, há registros com nomes de classe para Aplicação, Computador e Roteador IP. O sistema também atribui um valor de caminho de classe de dois dígitos a cada tabela descendente da hierarquia. O caminho da classe é baseado no local da tabela na hierarquia. Por exemplo, a classe primária Hardware pode ter um caminho de classe como /!!/!D e a classe secundária Computer pode ter um caminho de classe como /!!/!D/!!.
Para encontrar registros no modelo de extensão Tabela por partição, o sistema consulta a tabela lógica e suas partições e usa a coluna de caminho de classe para restringir os resultados. Como essas consultas não exigem a junção de resultados de várias tabelas, o sistema oferece melhor desempenho de pesquisa. Além disso, o caminho da classe reduz o número total de registros a serem pesquisados, o que melhora ainda mais o desempenho da pesquisa.
O sistema usa o modelo de extensão Tabela por partição para a hierarquia da tabela Item de configuração base [cmdb] em bancos de dados MySQL. Para usar Tabela por partição em um banco de dados Oracle, entre em contato com o Suporte técnico.