Exportação de Dados Generalizados

O método de exportação de dados generalizados fornece uma exportação de dados baseada em arquivo no formato JSON. A exportação dos dados de um objeto de manutenção usando esse método envolve uma exportação inicial dos dados inteiros da entidade, seguida de uma exportação contínua de alterações, conforme elas são feitas ao longo do tempo. Esses processos são ilustrados no seguinte diagrama:

Imagem representando o Aplicativo à esquerda e o Armazenamento de Objetos do Cliente à direita. No Aplicativo, há um banco de dados que contém a Entidade para Exportação, que neste diagrama está conectado por meio de uma seta ao Processo em Batch Exportação de Dados Iniciais fora do banco de dados. O texto na seta indica Obter dados via SQL em massa. Há outra seta da caixa de processo em batch para os arquivos JSON na seção Armazenamento de Objetos do Cliente. A caixa de processo em batch tem uma referência a observações relacionadas a essa etapa que são descritas como parte do próximo resumo geral de etapas. Abaixo disso, há outra seta da caixa Entidade para Exportação para um círculo chamado Atualizações, dentro do banco de dados. O texto desta seta é Alterar Captura de Dados (CDC). No círculo Atualizações, há a seta Obter dados via SQL em massa, que vai para o Processo em Batch de Exportação em Andamento, representado por uma caixa fora do espaço do banco de dados. Esse processo em batch é conectado por meio de uma seta a outro conjunto de arquivos JSON.

O processo geral envolve as seguintes etapas:
  • Ative entidades para exportação no portal Painel de Controle de Exportação Generalizada. É possível ativar muitas entidades de uma só vez. Esta etapa também permite que você ative a exportação contínua dessas entidades.

  • Envie o processamento em lote Iniciador de Exportação Inicial Generalizada (F1-GEXPI ) para exportar o conteúdo atual de todas as entidades ativadas. Esta etapa envia um processamento em lote separado para cada entidade que você ativou para exportação.

    Observação: pode ser usada uma exportação completa do banco de dados. O arquivo de exportação pode ser importado no ambiente de destino para estabelecer a linha de base inicial. Os clientes de nuvem podem entrar em contato com as operações na nuvem para solicitar essa exportação para uso local. Esta exportação de esquema é limitada para fins de relatório e destina-se apenas à extração inicial.
  • Programe o processamento em lote de Exportação Contínua Generalizada (F1-GEEXO ) para ser executado periodicamente.

As seções a seguir descrevem ainda conceitos e diretrizes relacionados ao método de exportação de dados generalizados.

Aplicabilidade

Embora a maioria das entidades seja elegível para exportação de dados generalizados, nem todas elas são. Veja algumas das razões comuns para isso:
  • A entidade gerencia um volume de dados extremamente alto. O rastreamento de alterações nessa entidade dobraria o volume de dados gerenciados e afetaria o desempenho geral.

  • A entidade é atualizada com muita frequência. O rastreamento desses eventos pode afetar o desempenho geral.

  • A entidade é usada pela infraestrutura e pelos processos operacionais do produto. Essas entidades são mantidas de maneira diferente e não podem estar sujeitas aos métodos de exportação de dados generalizados.

Por padrão, um objeto de manutenção fica habilitado para o método de exportação de dados generalizados, a menos que esteja explicitamente marcado de outra forma pela opção Classe de Exportação de Dados. A opção pode ser usada para marcar uma entidade como não permitida para nenhum tipo de exportação ou permitida apenas para uma exportação especializada. A falta dessa opção explícita significa que o objeto de manutenção está habilitado para a exportação generalizada.

CUIDADO: se uma entidade for marcada explicitamente como não elegível para exportação de dados generalizados, haverá um bom motivo para isso e sua configuração não deverá ser alterada.

Um Método Ajusta Tudo

O método de exportação de dados generalizados foi projetado para acomodar muitos objetos de manutenção elegíveis de forma genérica que também devem levar em consideração as considerações de desempenho. Por esse motivo, este método não suporta opções de filtragem específicas da entidade nem regras personalizadas de qualquer tipo.

As seguintes regras se aplicam a todas as entidades que podem ser exportadas usando este método:
  • Dados inteiros são exportados.
    • Todos os campos de todas as tabelas que pertencem ao objeto de manutenção são exportados, exceto as tabelas "chave" e "log", se houver.

    • As tabelas de log de objetos de manutenção geralmente não contêm informações úteis de negócios e, como tal, são omitidas da exportação por motivos de desempenho e volume de dados. No entanto, há entidades para as quais os registros de log fornecem valor analítico. Quando aplicável, use a opção Exportar Tabelas de Log para incluir explicitamente tabelas de log para um objeto de manutenção específico.

  • A mesma estrutura e formato de dados é usado para todas as entidades. Para obter mais informações, consulte a seção Formato de Registro.

  • Os dados são exportados apenas para arquivos. Consulte a seção Exportar Somente para Arquivos para obter mais informações.

  • Todas as alterações são capturadas. Não é possível excluir algumas alterações de serem rastreadas para exportação contínua com base em regras de negócios personalizadas.

  • Quando os dados são alterados, uma captura completa dos dados relacionados a essa entidade é exportada para evitar a fusão pesada de dados no lado de destino.

  • Quando a entidade é excluída, somente a chave primária da entidade é exportada, com uma indicação de que ela foi excluída.

Observação: A exportação é incompatível com as entidades que dependem da funcionalidade de fuso horário lógico. Esse tipo de definição não é comumente usado e inclui objetos de manutenção que pelo menos um de seus campos é definido como armazenado no Horário Padrão Lógico.

Exportar apenas para arquivos

O destino imediato dos processos de exportação iniciais e contínuos são arquivos em um local especificado pelo cliente. Em uma instalação na Nuvem, os arquivos são criados em um Object Storage de propriedade do cliente.

Com base nas necessidades de negócios, você pode consumir ainda mais esses arquivos por aplicativos downstream como data lakes etc.

Ativando a Exportação de Dados

Para ativar a exportação de dados para um objeto de manutenção elegível, um registro de Controle de Exportação de Dados precisa ser criado. O registro mantém uma indicação de se a exportação inicial para o objeto de manutenção foi concluída ou não e se as alterações feitas na entidade devem ser rastreadas e exportadas continuamente. Um portal designado permite que você ative a exportação de dados generalizados para muitos objetos de manutenção de uma só vez, bem como monitore seu status de exportação atual rapidamente. Consulte o portal Painel de Controle de Exportação Generalizada para obter mais informações.

CUIDADO: a ativação e desativação de entidades para exportação só devem ser feitas por meio do Painel de Controle de Exportação Generalizada ou dos portais de Controle de Exportação de Dados para garantir que a configuração seja válida e concluída.
CUIDADO: quando aplicável, a exportação de dados em andamento deve ser ativada antes do envio do processo em batch de exportação inicial para a entidade. Isso garante que as alterações feitas durante a exportação inicial sejam rastreadas corretamente.

As opções de exportação em andamento são armazenadas em cache em vários caches on-line e em lote. Para que essas opções entrem em vigor e rastreiem as alterações de entidade feitas por qualquer processamento on-line ou em lote, os vários caches devem ser adequadamente descarregados quando essas opções forem alteradas. O uso dos portais designados para ativar as entidades para exportação aciona uma descarga 'global' dos caches. Se os processadores do grupo de threads de lote estiverem configurados para atualizar seus caches quando um esvaziamento global for solicitado, essa será a única etapa necessária. Do contrário, a tarefa em batch F1–FLUSH também deverá ser enviada para atualizar os caches usados no processamento em batch. Para obter mais informações, consulte Visão Geral de Armazenamento em Cache.

Exportação de Dados Inicial

Cada objeto de manutenção elegível para o método de exportação de dados generalizados é associado a um controle de lote de exportação de dados inicial referenciado no objeto de manutenção usando a opção Exportar Controle de Lote. O mesmo programa de lote comum é usado por todos esses controles de lote para exportar todos os dados de uma entidade para arquivos. O processo é multithreaded e produz um arquivo por thread por padrão. Um parâmetro de lote opcional permite que vários arquivos menores sejam gerados por thread, definindo um limite no número de registros gravados em cada arquivo. Para obter mais informações, consulte a seção Tamanho do Arquivo.

Em vez de enviar manualmente o processo de lote de exportação inicial generalizado para cada objeto de manutenção que você ativou para exportação, envie o processamento em lote F1-GEXPI Iniciador de Exportação Inicial Gerado para enviá-los automaticamente de uma só vez.

O processo de exportação inicial de cada objeto de manutenção atualiza o registro de controle de exportação de dados correspondente do objeto de manutenção para indicar que o processo foi iniciado e o atualiza novamente após a conclusão. Isso permite que você exiba o status geral da exportação inicial em todas as entidades ativadas no portal Painel de Controle de Exportação Generalizada.

Observe que o processamento em lote do iniciador só envia processamentos em lote para objetos de manutenção ativados que, de acordo com seu registro de controle de exportação de dados, sua exportação inicial ainda não foi iniciada. Se você precisar exportar uma ou mais entidades novamente, redefina a indicação do status de exportação inicial nos registros de controle de exportação de dados e envie o processamento em lote do iniciador novamente.

O nome do arquivo de exportação inicial é construído da seguinte forma:
INIT_EXPORT[_file prefix(optional)]_[maintenance object]_[batch run]_[thread]_[thread count]_[timestamp][_file sequence].json.gz 
A parte "sequência de arquivo" do nome do arquivo é usada somente quando mais de um arquivo é criado por thread. O sufixo de sequência é preenchido a partir do segundo arquivo, como segue _ 2.

Consulte qualquer um dos controles de lote de exportação inicial generalizados individuais e o controle de lote do iniciador para obter mais informações.

Restringindo a Exportação Inicial por Data

Por padrão, o processo em lote Exportação de Dados Iniciais exporta todos os dados de uma entidade. Em algumas situações, geralmente em torno de dados históricos de alto volume, pode ser necessário restringir a exportação a dados mais recentes, por exemplo, nos últimos meses de dados.

O processamento em batch de exportação inicial suporta um parâmetro de batch opcional Restringir por Data que pode ser usado para limitar o escopo dos dados a serem exportados. O parâmetro faz referência a um campo de data e a um período solicitado em termos de número de dias antes da data de referência. Para obter mais informações, consulte o controle de batch do Modelo de Exportação Inicial Generalizada F1-GEIXP.

CUIDADO: a exclusão de registros da exportação deve ser cuidadosamente considerada, pois isso pode resultar em discrepâncias de dados quando os dados excluídos são referenciados em outras entidades exportadas.
Observação: A opção só se aplica a entidades específicas que têm uma data de referência de qualificação e o período para exportação pode variar para cada cliente. Portanto, o novo parâmetro não é adicionado a qualquer controle de batch de Exportação Inicial do produto base além do controle de batch do modelo para fins de documentação. É possível clonar o controle do lote do produto base para uma entidade específica e adicionar o parâmetro de acordo com as necessidades de negócios.

Exportação de Dados em Andamento

As alterações de dados são rastreadas pelo algoritmo Capturar Alteração para Exportação Contínua (F1-MO-REGCHN) Auditoria do Objeto de Manutenção. O algoritmo registra a chave primária de uma entidade alterada em uma tabela designada de Atualização de Exportação de Dados que serve como uma fila de entidades alteradas para exportação. A fila é consumida posteriormente pelo processamento em lote de exportação de dados em andamento.

Observação: O spot de plug-in Auditoria do Objeto de Manutenção é capaz de rastrear alterações feitas na entidade por qualquer camada do aplicativo. Realizar alterações usando SQL direto ignoraria esse mecanismo e, portanto, deveria ser evitado.

A regra de auditoria é adicionada a um objeto de manutenção quando a opção de exportação de dados em andamento em seu registro de controle de exportação de dados correspondente está ativada. Da mesma forma, a regra de auditoria é removida do objeto de manutenção quando a opção de exportação em andamento está desativada.

Observação: A opção de exportação em andamento deve ser ativada no registro de controle de exportação de dados da entidade antes de ser exportada inicialmente. Isso garante que as alterações feitas enquanto o processo de exportação inicial estiver em andamento não sejam perdidas.

Diferentemente do processo de exportação de lote inicial que exige que um controle de lote seja definido para cada objeto de manutenção elegível, um único processo de lote é usado para exportar as alterações contínuas feitas em todas as entidades.

O seguinte descreve o processamento em lote de exportação em andamento em um nível alto:
  • Todas as alterações enfileiradas na tabela Atualização de Exportação de Dados são exportadas para um arquivo de exportação em andamento designado. Para obter mais informações, consulte a seção Gerenciando um Backlog Grande.

  • Uma captura completa dos dados relacionados à entidade alterada é exportada para evitar a fusão pesada de dados no lado de destino.

  • Depois de exportados, os registros são excluídos da tabela Atualização de Exportação de Dados.

O processo é multithreaded e um arquivo separado é produzido para cada thread por padrão. Um parâmetro de lote opcional permite que vários arquivos menores sejam gerados por thread, definindo um limite no número de registros gravados em cada arquivo. Para obter mais informações, consulte a seção Tamanho do Arquivo.

Observação: É importante programar o processamento em lote de exportação em andamento para ser executado com frequência suficiente para evitar o acúmulo de um alto volume de registros na tabela Atualização de Exportação de Dados. Quanto menor a tabela for mantida, mais rápido será o mecanismo de captura de dados de alteração para adicionar registros a ela.
O nome do arquivo de exportação em andamento é construído da seguinte forma:
INC_EXPORT_[batch run]_[thread]_[thread count]_[timestamp][_file sequence].json.gz 
A parte "sequência de arquivo" do nome do arquivo é usada somente quando mais de um arquivo é criado por thread. O sufixo de sequência é preenchido a partir do segundo arquivo, como segue _ 2.

Para obter mais informações, consulte o controle batch de Exportação Contínua Generalizada (F1-GEEXO).

Tamanho do Arquivo

O processamento em lote de exportação inicial produz um único arquivo por thread por padrão. Para algumas entidades de alto volume, isso pode resultar em arquivos muito grandes para serem gerenciados. Para produzir vários e menores arquivos para uma entidade específica, limite o número de registros gravados em cada arquivo definindo o parâmetro correspondente no controle de lote de exportação inicial definido para a entidade. O mesmo parâmetro pode ser fornecido ao enviar o processo em lote Iniciador de Exportação Inicial; nesse caso, o valor do iniciador só será usado quando um valor correspondente não tiver sido definido no registro de controle batch específico da entidade.

Da mesma forma, o processamento em lote de exportação em andamento produz um único arquivo por thread por padrão. Para produzir vários e menores arquivos, limite o número de registros gravados em cada arquivo definindo o parâmetro correspondente no controle de lote.

Para evitar a criação de muitos arquivos por uma única execução em lote, o sistema define um limite máximo de cerca de 500 arquivos por execução. Quando o número solicitado de registros por arquivo é determinado a realizar com que o número de arquivos gerados exceda o limite do sistema, o valor real usado é ajustado para atender ao limite do sistema.

Gerenciando um Backlog Grande

Quando um grande backlog de alterações se acumula na fila de exportação em andamento por algum motivo, o próximo lote demora mais para ser exportado, o que atrasa a etapa de importação downstream. Uma opção melhor é limpar o backlog em "chunks" menores, permitindo que o processo downstream os importe à medida que são disponibilizados.

É possível limitar o número de registros que o processamento em lote exporta usando o parâmetro de lote Limite de Processamento de Thread. Quando especificado, o número de registros exportados por cada thread é limitado pelo limite especificado, deixando os registros restantes a serem consumidos por execuções de lote subsequentes. Em vez de aguardar a próxima execução de lote agendada, um novo processo de lote poderá ser enviado automaticamente, se solicitado explicitamente para isso usando o parâmetro de lote Liberação Automática de Backlog.

É importante garantir que o backlog seja apagado gradualmente e que a fila retome seu tamanho normal em tempo hábil. O limite de processamento deve, portanto, ser definido com um valor apropriado que promova a liberação adequada da fila. Para isso, pelo menos 20% da fila e pelo menos 100.000 registros devem ser consumidos por cada execução em lote em todos os threads. Se o limite especificado não atender à necessidade de liberação mínima, o limite de processamento será ajustado de acordo.

Formato do registro

Os dados são extraídos e exportados diretamente do banco de dados em operações de leitura em massa por motivos de desempenho. Por esse motivo, a estrutura usada não reflete o modelo de dados lógico da entidade, mas sim sua lista física de tabelas. Os dados de uma determinada instância são organizados por tabelas seguidas por linhas em cada tabela e para cada linha sua lista de campos no formato JSON.

A seguir, são descritos o formato e a estrutura usados:

{
"OBJ": "<mo name>",
"TIMESTAMP": "<export time in ISO format for example 2019-07-25T11:06:04.740615Z>",
"PK1": "<mo pk1 value>",
"PK2": "<mo pk2 value if any>",  ← PK2-5 should only be included when applicable
"PK3": "<mo pk3 value if any>",
"PK4": "<mo pk4 value if any>",
"PK5": "<mo pk5 value if any>",
"DELETED": true,  ← should only be included when the entity is deleted
"DATA": 
{
"<MO table name 1>":
[
{<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>},...
],
"<MO table name 2>":
[
{<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>}
],...
 "<MO table name n>":
[
 {<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>}
]
}

Observações sobre os valores e formatos de campo:

  • Todos os campos de uma linha são incluídos mesmo quando o campo está vazio ou é nulo.

  • Todos os valores de string são reduzidos em excesso de espaços finais, mas se um campo estiver vazio, ele será exportado como uma string vazia "" e não nulo.

  • Uma matriz vazia é usada para um nó de tabela quando não há registros para a entidade na tabela.

  • As informações de data/hora são convertidas no fuso horário UTC e exportadas no formato ISO, por exemplo, 2019-07-25T11:06:04.740615Z.

  • As exclusões têm um indicador explícito no cabeçalho.

Ordem de Arquivos de Consumo

É importante aplicar todos os arquivos de exportação iniciais para um objeto de manutenção antes de aplicar arquivos de alteração em andamento para garantir a consistência dos dados.

Veja a seguir um procedimento recomendado para o consumo de arquivos de exportação de dados generalizados:
  • Aplique todos os arquivos de exportação de dados iniciais antes dos arquivos de exportação em andamento.

  • Aplique os arquivos iniciais para um objeto de manutenção na ordem do número de execução.

  • Aplicar arquivos de exportação em andamento na ordem do número de execução.

  • Se uma nova exportação inicial estiver disponível, o procedimento de consumo do arquivo deverá ser alterado temporariamente da seguinte forma:

    • Interrompa o consumo de arquivos de exportação em andamento.

    • Aplicar os novos arquivos de exportação iniciais.

    • Retomar o consumo de arquivos de exportação em andamento.

Recuperar de um Arquivo de Exportação Contínua Perdida

O processo em batch de exportação em andamento mantém um backup de todas as chaves de entidade, que foram exportadas em uma execução em batch específica, em uma tabela de backup designada. Em raras situações em que um arquivo de exportação em andamento é excluído ou fica corrompido antes de ser processado, a tabela de backup pode ser usada para identificar as alterações ausentes e exportá-las novamente.

Use o processo em batch Restaurar Chaves de Exportação Generalizadas (F1-GERST) para recuperar-se dessa situação. O processo identifica as entidades que foram exportadas durante uma execução em batch especificada e as adiciona de volta à fila de alterações contínuas da tabela de backup. As entidades seriam então exportadas novamente com as próximas execuções de exportação em andamento. Esse método não restaura o conteúdo exato do arquivo original que foi perdido porque não pode ser reproduzido. Em vez disso, o processo garante que as entidades incluídas no arquivo perdido sejam exportadas novamente.

Observação: os registros de backup seguem uma política de retenção semanal por motivos de desempenho. Eles são destinados a suportar situações futuras próximas da recuperação de arquivos e não são um log de captura de dados de alteração histórica.