IMS DB - Indexação Secundária

A indexação secundária é usada quando queremos acessar um banco de dados sem usar a chave concatenada completa ou quando não queremos usar os campos primários de sequência.

Segmento de ponteiro de índice

DL / I armazena o ponteiro para segmentos do banco de dados indexado em um banco de dados separado. O segmento de ponteiro de índice é o único tipo de índice secundário. Consiste em duas partes -

  • Elemento de Prefixo
  • Elemento de Dados

Elemento de Prefixo

A parte do prefixo do segmento de ponteiro de índice contém um ponteiro para o segmento de destino do índice. O segmento de destino do índice é o segmento acessível por meio do índice secundário.

Elemento de Dados

O elemento de dados contém o valor da chave do segmento no banco de dados indexado sobre o qual o índice é construído. Isso também é conhecido como segmento de origem do índice.

Aqui estão os pontos-chave a serem observados sobre a indexação secundária -

  • O segmento de origem do índice e o segmento de origem de destino não precisam ser iguais.

  • Quando configuramos um índice secundário, ele é mantido automaticamente pelo DL / I.

  • O DBA define muitos índices secundários de acordo com os vários caminhos de acesso. Esses índices secundários são armazenados em um banco de dados de índice separado.

  • Não devemos criar mais índices secundários, pois eles impõem sobrecarga de processamento adicional no DL / I.

Chaves Secundárias

Pontos a serem observados -

  • O campo no segmento de origem do índice sobre o qual o índice secundário é construído é chamado de chave secundária.

  • Qualquer campo pode ser usado como chave secundária. Não precisa ser o campo de sequência de segmentos.

  • As chaves secundárias podem ser qualquer combinação de campos únicos no segmento de origem do índice.

  • Os valores-chave secundários não precisam ser exclusivos.

Estruturas de dados secundárias

Pontos a serem observados -

  • Quando construímos um índice secundário, a aparente estrutura hierárquica do banco de dados também é alterada.

  • O segmento de destino do índice se torna o segmento raiz aparente. Conforme mostrado na imagem a seguir, o segmento de Engenharia torna-se o segmento raiz, mesmo que não seja um segmento raiz.

  • O rearranjo da estrutura do banco de dados causado pelo índice secundário é conhecido como estrutura de dados secundária.

  • As estruturas de dados secundárias não fazem nenhuma alteração na estrutura física do banco de dados principal presente no disco. É apenas uma forma de alterar a estrutura do banco de dados na frente do programa aplicativo.

Operador E Independente

Pontos a serem observados -

  • Quando um operador AND (* ou &) é usado com índices secundários, ele é conhecido como um operador AND dependente.

  • Um AND independente (#) nos permite especificar qualificações que seriam impossíveis com um AND dependente.

  • Este operador pode ser usado apenas para índices secundários em que o segmento de origem do índice depende do segmento de destino do índice.

  • Podemos codificar um SSA com um AND independente para especificar que uma ocorrência do segmento de destino seja processada com base nos campos em dois ou mais segmentos de origem dependentes.

01 ITEM-SELECTION-SSA.
   05 FILLER           PIC X(8).
   05 FILLER           PIC X(1) VALUE '('.
   05 FILLER           PIC X(10).
   05 SSA-KEY-1        PIC X(8).
   05 FILLER           PIC X   VALUE '#'.
   05 FILLER           PIC X(10).
   05 SSA-KEY-2        PIC X(8).
   05 FILLER           PIC X   VALUE ')'.

Sequenciamento Esparso

Pontos a serem observados -

  • O sequenciamento esparso também é conhecido como indexação esparsa. Podemos remover alguns dos segmentos de origem do índice do índice usando sequenciamento esparso com banco de dados de índice secundário.

  • O sequenciamento esparso é usado para melhorar o desempenho. Quando algumas ocorrências do segmento de origem do índice não são usadas, podemos remover isso.

  • DL / I usa um valor de supressão ou uma rotina de supressão ou ambos para determinar se um segmento deve ser indexado.

  • Se o valor de um campo de sequência no segmento de origem do índice corresponder a um valor de supressão, nenhum relacionamento de índice será estabelecido.

  • A rotina de supressão é um programa escrito pelo usuário que avalia o segmento e determina se ele deve ou não ser indexado.

  • Quando a indexação esparsa é usada, suas funções são gerenciadas pelo DL / I. Não precisamos fazer provisões especiais para isso no programa de aplicação.

Requisitos DBDGEN

Conforme discutido em módulos anteriores, DBDGEN é usado para criar um DBD. Quando criamos índices secundários, dois bancos de dados estão envolvidos. Um DBA precisa criar dois DBDs usando dois DBDGENs para criar um relacionamento entre um banco de dados indexado e um banco de dados indexado secundário.

Requisitos PSBGEN

Depois de criar o índice secundário para um banco de dados, o DBA precisa criar os PSBs. PSBGEN para o programa especifica a seqüência de processamento apropriada para o banco de dados no parâmetro PROCSEQ da macro PSB. Para o parâmetro PROCSEQ, o DBA codifica o nome do DBD para o banco de dados de índice secundário.