Arquitetura do conjunto de dados em um Qlik Open Lakehouse | Qlik Cloud Ajuda
Ir para conteúdo principal Pular para conteúdo complementar

Arquitetura do conjunto de dados em um Qlik Open Lakehouse

Fontes de streaming têm sua própria arquitetura no Qlik Open Lakehouse, pois não exigem o Data Movement gateway para carregar dados no compartimento de aterrissagem, mas são alimentadas pelo cluster lakehouse.

Ao ingerir dados de arquivos que incluem um padrão de dados no nome do arquivo, isso permite que o cluster lakehouse execute operações de lista direcionadas no S3, o que acelera drasticamente o tempo para ler a lista de arquivos. Além disso, o Qlik Open Lakehouse pode prever arquivos que chegam com base no padrão de data. A tarefa de aterrissagem de fluxo não precisa listar o compartimento inteiro a cada vez, mas, em vez disso, pode solicitar os arquivos do S3 dentro de um intervalo de datas específico. Ter uma lista de arquivos menor leva a um melhor desempenho. A configuração opcional Excluir após o carregamento pode ser usada para manter um número pequeno de arquivos. Nenhum carregamento total é realizado, os primeiros registros são considerados alterações inseridas.

Em um Qlik Open Lakehouse, a tarefa de transformação de streaming substitui a tarefa de armazenamento. Essa tarefa é usada para transformar e armazenar dados de aterrissagem como tabelas do Iceberg. Uma tarefa de transformação de fluxo só pode ser adicionada após uma tarefa de aterrissagem de fluxo. A tarefa de transformação de fluxo suporta dois modos para atualizar registros:

  • Somente anexar: Adiciona novos registros sem modificar os dados existentes, e as restrições de chave não são aplicadas se registros duplicados chegarem.
  • Aplicar alterações (Mesclar): atualiza os registros existentes e insere novos registros com base em campos chave. Esse modo oferece a opção de usar uma exclusão suave ou reter dados históricos (Tipo 2).

A tarefa de transformação de fluxo é uma tarefa baseada em destino, que mapeia entre origem e destino e inclui recursos de evolução de esquema. Ela oferece recursos de transformação estendidos, incluindo o desaninhamento de estruturas aninhadas e o nivelamento de arrays. Para obter mais informações sobre as funções que você pode usar na tarefa de transformação de fluxo, consulte Funções de transformação.

Ao ingerir de uma fonte de fluxo, você tem a capacidade de configurar o particionamento do Iceberg, gerenciamento de retenção, colunas de classificação, expiração de snapshot para controlar os custos de armazenamento e otimizar o desempenho da consulta.

Arquitetura para um pipeline de dados do Qlik Open Lakehouse de fluxo no modo Somente anexar

Arquitetura do Open Lakehouse no modo somente anexar

Arquitetura para um pipeline de dados do Qlik Open Lakehouse de fluxo no modo Mesclar

Arquitetura do Open Lakehouse no modo mesclar

Tabelas de preparação

Os seguintes campos de cabeçalho são adicionados às tabelas de aterrisagem. Esses campos sempre existem nos dados de aterrissagem, mas por padrão não na transformação downstream. Você pode adicionar os campos à transformação usando uma expressão.

Campos de cabeçalho adicionados para fontes do Kafka
Campo Tipo Descrição
hdr__kafka_partition Longo Partição do Kafka
hdr__kafka_topic String Tópico do Kafka
hdr__kafka_offset Longo Valor em execução na partição
hdr__kafka_key String Chave codificada em Base64. Defina como string NULL se não estiver disponível.
hdr__kafka_headers String

JSON com todos os cabeçalhos de mensagem. Defina como string NULL se não estiver disponível.  

Campos de cabeçalho adicionados para fontes do Amazon Kinesis
Campo Tipo Descrição
hdr__kinesis_stream String Fluxo do Amazon Kinesis
hdr__kinesis_shard String Shard do Amazon Kinesis
hdr__kinesis_offset String Deslocamento do Amazon Kinesis
Campos de cabeçalho adicionados para fontes do Amazon S3
Campo Tipo Descrição
hdr__file_name String Nome do arquivo
hdr__file_size Longo Tamanho do arquivo em bytes.

Esquemas

Artefatos são gerados em um esquema interno e um esquema de tarefa de dados.

  • O esquema interno contém uma tabela física com várias partições.

  • O esquema de tarefa de dados contém as exibições que você pode usar para consumir os dados.

    Quando um esquema está associado a mais de uma tarefa de dados, cada tarefa de dados deve usar um prefixo exclusivo para tabelas e exibições. Você pode definir o prefixo nas configurações da tarefa de dados.

Somente os esquemas internos são verificados quanto a conflitos de nomenclatura. Para outros esquemas, você deve garantir que não haja conflitos de nomenclatura nos nomes das tabelas. A melhor prática é nomear o esquema interno com o mesmo nome do esquema de tarefa de dados com _internal adicionado. Isso garante que cada combinação de esquema e prefixo seja única.

Nota informativaTodas as tabelas e exibições são gerenciadas pelo Qlik Talend Data Integration. Não altere os dados usando outras ferramentas.

Tabelas

Para cada tabela de origem, é criada uma tabela no esquema interno com o sufixo _internal, usando o formato:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

Essa tabela contém cinco partições no modo Aplicar alterações (Mesclar), cada uma servindo a um propósito distinto na forma como os dados são processados e armazenados. Cada partição utiliza um subconjunto das colunas da tabela com base em sua função no ciclo de vida dos dados. No modo Somente anexar, a tabela não tem partições e se comporta como a partição Current (ODS).

Nota informativaA tabela no esquema interno está sujeita a alterações sem aviso prévio. Você deve usar principalmente exibições para consumir dados sempre que possível.

O conjunto de dados interno é estruturado para gerenciar com eficiência os dados recebidos do seu sistema de origem, suportando a ingestão em tempo real e o rastreamento histórico. O fluxo de dados é gerenciado por meio de várias partições especializadas, cada uma descrita abaixo:

  • Partição Changes – ingestão em tempo real

    Todas as alterações do sistema de origem – inserções, atualizações e exclusões – são primeiro anexadas à partição Changes.

    • Atuando como um log de alterações bruto, a partição fornece um feed completo da atividade de origem antes que qualquer transformação ocorra.

    • Cada alteração é marcada com um tipo (I, U ou D), indicando como ela é processada.

    • Os eventos são capturados da fonte à medida que ocorrem. A partição é atualizada quase em tempo real.

    • A partição Changes está disponível quando as seguintes configurações são aplicadas na tarefa de dados de aterrisagem no lake.

      • Na guia Geral, o Método de atualização está definido como CDC.

      • O carregamento total está ativado.

  • Partição Asset_state – acompanhamento do progresso

    À medida que as alterações são ingeridas, a partição Asset_state registra dois carimbos de data/hora importantes:

    • Quando as alterações foram anexadas pela última vez à partição Changes.

    • Quando as alterações foram aplicadas pela última vez à partição Current.

    Isso proporciona visibilidade total do pipeline de sincronização e ajuda no monitoramento ou na solução de problemas de atrasos.

  • Partição Current (ODS) – última réplica da fonte

    As alterações da partição Changes são aplicadas periodicamente à partição Current para manter uma cópia atualizada e otimizada para consulta da fonte de dados.

    • Uma tarefa em segundo plano é executada automaticamente para aplicar essas atualizações. Isso se baseia no volume de alterações acumuladas, e não em um cronograma fixo.

    • O carregamento total inicial é gravado diretamente na partição Current.

    • Essa partição reflete o estado atual dos dados e foi projetada para uma consulta eficiente.

  • Partição Prior (HDS) – dados históricos

    Quando um registro é atualizado ou excluído na partição Current, uma cópia da versão anterior é gravada na partição Prior

    • Os registros contêm metadados, incluindo o histórico de alterações e o intervalo de datas em que os dados são válidos.

    • Isso suporta a dimensão de alteração lenta do Tipo 2 (SCD2).

    • A partição Prior está disponível quando a opção Manter registros históricos e arquivar registros de alterações está ativada na guia Geral das configurações da tarefa Dados de armazenamento.

    • Quando uma versão atualizada de um registro entra na partição Current, o registro anterior é movido para a partição Prior para acompanhamento histórico.

  • Partição Reload

    A partição Reload atua como uma área de preparação temporária durante recargas completas manuais ou programadas:

    • Os novos dados são gravados primeiro na partição Reload.

    • As tarefas de manutenção regulares limpam as alterações pendentes antes de serem pausadas.

    • Os dados são comparados com a partição Current e somente as diferenças são movidas para a partição Current.

    • A partição Reload é limpa quando a operação é concluída.

    Esse processo garante o mínimo de interrupção do conjunto de dados principal durante as operações de recarga completa.

Partição Current

Campo Tipo Descrição
hdr__key_hash VARBINARY (20) Hash de todas as chaves primárias de registro. O formato de hash é SHA1. As colunas são separadas por um caractere de backspace.
hdr__from_timestamp TIMESTAMP

Carimbo de data/hora em UTC:

  • Para dados obtidos de um carregamento total, este é o horário de início do carregamento total.

  • Para uma alteração proveniente da partição Changes, este é o campo de carimbo de data/hora do registro.

hdr__operation VARCHAR (1)

Operação mais recente deste registro.

  • D - excluído da partição Changes.

  • U - atualizado da partição Changes.

  • I - inserido da partição Changes.

  • L - inserido pela tarefa de carregamento total.

  • d - excluído de comparar e aplicar.

  • u - atualizado de comparar e aplicar.

  • i - inserido de comparar e aplicar.

hdr__inserted_timestamp TIMESTAMP Carimbo de data/hora em UTC da primeira vez em que a chave foi adicionada. Ao usar carregamento total, a hora de início do carregamento total.
hdr__modified_timestamp TIMESTAMP Carimbo de data/hora em UTC de quando a última atualização foi feita.

Partição Prior

Campo Tipo Descrição
hdr__key_hash VARBINARY (20) Hash de todas as chaves primárias de registro.
hdr__from_timestamp TIMESTAMP Carimbo de data/hora em UTC.
hdr__to_timestamp TIMESTAMP Carimbo de data/hora em UTC.
hdr__operation STRING (1)

Operação mais recente deste registro.

  • D - excluído da partição Changes.

  • U - atualizado da partição Changes.

  • I - inserido da partição Changes.

  • L - inserido pela tarefa de carregamento total.

  • d - excluído de comparar e aplicar.

  • u - atualizado de comparar e aplicar.

  • i - inserido de comparar e aplicar.

hdr__was_current_from_timestamp TIMESTAMP O carimbo de data/hora em UTC para o primeiro registro de hora era atual.
hdr__was_current_to_timestamp TIMESTAMP O carimbo de data/hora em UTC para o último registro de hora era atual.

Partição Changes

Campo Tipo Descrição
hdr__change_identifier VARCHAR (50)

O identificador de alteração é uma string com duas partes:

  • Carimbo de data/hora de início de execução em lote em milissegundos desde 1/1/1970 (string de 10 dígitos).

  • Sequência de alteração do gateway de replicação (35 caracteres).

hdr__operation VARCHAR (1)

Operação mais recente deste registro.

  • D - excluído da partição Changes.

  • U - atualizado da partição Changes.

  • I - inserido da partição Changes.

  • L - inserido pela tarefa de carregamento total.

  • d - excluído de comparar e aplicar.

  • u - atualizado de comparar e aplicar.

  • i - inserido de comparar e aplicar.

hdr__timestamp TIMESTAMP Carimbo de data/hora em UTC.
hdr__key_hash BINARY (20) Hash de todas as chaves primárias de registro.
hdr__inserted_timestamp TIMESTAMP Carimbo de data/hora UTC da hora quando a alteração foi processada pelo Qlik.

Partição Asset_state

Campo Tipo Descrição
hdr__apply_change_identifier VARCHAR (50) O identificador de alteração da última alteração aplicada à partição Current.
hdr__copy_change_identifier VARCHAR (50) O identificador de alteração da última alteração anexada à partição Changes.

Partição Reload

As colunas usadas pela partição Reload são idênticas às da partição Current.

Exibições

Todas as visualizações criadas são atualizadas quase em tempo real. As seguintes exibições estão disponíveis para simplificar as consultas e os relatórios:

Atual

A exibição Atual reflete o estado mais recente dos dados. Essa exibição representa uma réplica da tabela de origem, atualizada quase em tempo real. Ela mescla dados das partições Current e Changes.

Nome: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

Nenhuma coluna de cabeçalho é adicionada à estrutura da tabela.

Histórico

Uma visualização Histórico é gerada no esquema de ativo de dados para cada tabela de origem selecionada quando o Histórico estiver habilitado nas configurações da tarefa de dados. A visualização Histórico mescla dados das partições Prior e Changes. Ela fornece uma linha do tempo completa das alterações, ideal para auditoria ou análise histórica.

Nome: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

Os seguintes campos de cabeçalho são adicionados à visualização Histórico:

Campo Tipo Descrição
hdr__key_hash BINARY (20) Hash de todas as chaves primárias de registro.
hdr__from_timestamp TIMESTAMP O carimbo de data/hora em que a alteração ocorreu no sistema de origem. Isso reflete quando o usuário fez a alteração originalmente.
hdr__to_timestamp TIMESTAMP O carimbo de data/hora em que a alteração foi revertida ou atualizada no sistema de origem.
hdr__store VARCHAR (10)

Isso indica onde o registro reside:

  • CURRENT - se o registro residir na partição Current.

  • PRIOR - se o registro residir na partição Prior com dados históricos.

hdr__operation STRING (1)

Operação mais recente deste registro.

  • D - excluído da partição Changes.

  • U - atualizado da partição Changes.

  • I - inserido da partição Changes.

  • L - inserido pela tarefa de carregamento total.

  • d - excluído de comparar e aplicar.

  • u - atualizado de comparar e aplicar.

  • i - inserido de comparar e aplicar.

hdr__deleted BIT Indica se o registro é excluído de forma reversível, com base em se hdr__operation é D ou d.
hdr__was_current_from_timestamp TIMESTAMP A hora (UTC) em que essa linha entrou na partição Current. Normalmente, é quando o trabalho de armazenamento foi executado e a alteração foi aplicada.
hdr__was_current_to_timestamp TIMESTAMP A hora (UTC) em que a linha foi removida da tabela Current, por exemplo, devido a uma versão mais recente.

Nota informativaAs exibições Atual e Histórico dependem da partição Changes e são quase sempre em tempo real. No entanto, se o desempenho da consulta for lento, isso pode ser devido a um grande número de alterações que ainda não foram aplicadas às partições Current ou Prior. Os deltas não mesclados exigem mais processamento no momento da consulta, tornando o acesso mais lento.

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo – um erro de digitação, uma etapa ausente ou um erro técnico – avise-nos!