Como funciona a replicação de tabelas do S3 - Amazon Simple Storage Service

Como funciona a replicação de tabelas do S3

A replicação de tabelas do S3 cria réplicas somente leitura de tabelas Apache Iceberg em todas as regiões e Contas da AWS. As tabelas de réplica são mantidas automaticamente pelo serviço Tabelas do S3 e contêm todos os dados e metadados e o histórico completo de snapshots da tabela de origem, o que os torna consultáveis por meio de qualquer mecanismo compatível com o Iceberg para analytics e operações de viagem no tempo.

Ao configurar a replicação para uma tabela, o serviço Tabelas do S3:

  • Cria uma tabela de réplica somente leitura em cada bucket de tabela de destino com o mesmo nome e namespace da tabela de origem.

  • Preenche a réplica com o estado mais recente da tabela de origem.

  • Monitora a tabela de origem em busca de novas atualizações.

  • Confirma todas as atualizações nas réplicas na mesma ordem da origem para manter a consistência.

Para obter mais informações, consulte as seções a seguir.

O que é replicado

Os seguintes componentes da tabela são replicados:

  • Snapshots da tabela: todos os snapshots, inclusive os compactados, são replicados em ordem cronológica, mantendo as relações entre primário e secundário e números de sequência da tabela de origem. Isso garante que as tabelas de réplica forneçam os mesmos recursos de viagem no tempo que as tabelas de origem.

  • Dados da tabela: todos os arquivos de dados referidos pelos snapshots da tabela são replicados para a região de destino. Isso inclui:

    • Arquivos de metadados: arquivos metadata.json da tabela, manifestos, listas de manifestos, estatísticas de partições e estatísticas de tabelas.

    • Arquivos excluídos: todos os arquivos excluídos são replicados para manter a precisão dos dados nas tabelas de réplica.

    • Arquivos de dados: todos os arquivos de dados referidos pelos manifestos são replicados.

  • Metadados da tabela: replicação completa de metadados, inclusive de informações do esquema (atual e histórico), especificações de partição, ordens de classificação e propriedades da tabela.

    • Informações do esquema: todos os esquemas de tabela são replicados, inclusive o esquema atual e as versões históricas do esquema. Isso garante que as consultas em tabelas de réplica usem as definições de coluna, os tipos de dados e os mapeamentos de campos corretos. O processo de replicação mantém o histórico de evolução do esquema, permitindo que as consultas de viagem no tempo funcionem corretamente nas tabelas de réplica.

    • Especificações de partição: as especificações de partição atuais e históricas são replicadas, garantindo que as tabelas de réplica mantenham a mesma estratégia de particionamento das tabelas de origem.

    • Ordens de classificação: as ordens de classificação das tabelas são replicadas para manter a otimização do desempenho das consultas.

Como os dados são replicados

A replicação determina um estado válido para tabelas de réplica comparando os metadados da tabela Apache Iceberg entre as tabelas de origem e de réplica. A replicação processa metadados em três categorias para atualizar a tabela de réplica.

Para metadados de tabela

Para campos de metadados versionados, a replicação mescla valores da tabela de origem nas matrizes da tabela de réplica para os seguintes campos:

  • snapshots: mescla todos os snapshots da tabela de origem na matriz de snapshots da tabela de réplica por snapshot-id.

  • snapshot-log: mescla todos os logs de snapshot da tabela de origem na matriz snapshot-log da tabela de réplica, classificados por carimbo de data/hora e snapshot-id.

  • sort-orders: mescla as definições de ordem de classificação da tabela de origem na matriz sort-orders da tabela de réplica por order-id.

  • partition-specs: mescla as especificações de partição da tabela de origem na matriz partition-specs da tabela de réplica por spec-id.

Para configuração da tabela

Para campos que representam a configuração da tabela, a replicação copia os valores diretamente da tabela de origem:

  • properties

  • partition-statistics

  • statistics

O estado atual da tabela também é transferido da tabela de origem:

  • current-snapshot-id

  • current-schema-id

  • last-column-id

  • last-partition-id

  • last-sequence-number

  • default-sort-order-id

  • next-row-id (Iceberg V3)

  • encryption-keys (Iceberg V3)

Estado específico da réplica

Os seguintes campos são calculados de dados mesclados e atualizados para a tabela de réplica:

  • location é atualizado durante a replicação para apontar para o local correto do arquivo no bucket de tabela de réplica, garantindo que todas as referências de arquivo sejam válidas no ambiente de destino.

  • metadata-log contém todos os nomes de arquivo de metadados de destino e é atualizado após cada replicação bem-sucedida com o nome do arquivo de metadados atual.

  • Todos os caminhos de arquivo são modificados para apontar para os locais da tabela de réplica.

Replicação de snapshots

A replicação de tabelas do S3 mantém o histórico completo de snapshots em todas as regiões, replicando todos os snapshots da tabela na mesma ordem de confirmação da tabela de origem. As relações entre primário e secundário da tabela de origem são preservadas na tabela de réplica.

Retenção de snapshots

É possível configurar um período de retenção de snapshots personalizado para as tabelas replicadas diferente do período de retenção da origem. Isso significa que, mesmo que os snapshots expirem e não estejam mais disponíveis na tabela de origem, eles podem ser preservados em réplicas.

Por exemplo, se a tabela de origem tiver um período de retenção de snapshots de trinta dias, mas a tabela de réplica estiver configurada com um período de retenção de noventa dias, a réplica manterá snapshots dos dois meses anteriores que não estão mais disponíveis na tabela de origem.

Os snapshots encerrados manualmente na tabela de origem também são preservados na tabela de réplica. Por exemplo, se você encerrou os snapshots de fevereiro na tabela de origem usando um procedimento do Spark, ainda poderá viajar no tempo até os snapshots na tabela de réplica.

Considerações e limitações

As seguintes considerações se aplicam a tabelas replicadas:

  • A funcionalidade Tabelas do S3 replica tabelas Iceberg V2 e V3. No entanto, não é possível replicar tabelas atualizadas (V2 → V3).

  • Os arquivos de metadados não podem ultrapassar 500 MB.

  • Embora as atualizações de tabela geralmente sejam replicadas em questão de minutos, a replicação pode levar mais tempo, dependendo do tamanho da atualização da tabela a ser replicada; por exemplo, quando a replicação começa a ser preenchida.

  • Não é possível usar tabelas com tags ou ramificações.

  • Não é possível usar a replicação com tabelas de metadados do Amazon S3 ou outras tabelas de sistema geradas pela AWS.

  • Todos os snapshots da tabela, inclusive os compactados, são replicados da tabela de origem. Por isso, não é possível usar a compactação em tabelas de réplica.