Metadados e retenção para tabelas Apache Iceberg™

O Snowflake trata metadados para tabelas Apache Iceberg™ de acordo com o tipo de catálogo que você usa (Snowflake ou externo).

Nota

A especificação do número mínimo padrão de instantâneos com a history.expire.min-snapshots-to-keep propriedade de tabela não é compatível com nenhum tipo de tabela Iceberg.

Tabelas que usam o Snowflake como o catálogo

O Snowflake gerencia o ciclo de vida dos metadados para esse tipo de tabela e exclui metadados, listas de manifesto e arquivos de manifesto antigos com base no período de retenção dos dados da tabela e snapshots.

Para definir o período de retenção para dados de tabela e snapshots, defina o parâmetro DATA_RETENTION_TIME_IN_DAYS no nível de conta, banco de dados, esquema ou tabela.

Criação

O Snowflake gera metadados para a versão 2 da especificação Apache Iceberg periodicamente e grava os metadados em arquivos no seu volume externo. Cada novo arquivo de metadados contém todas as alterações DML ou DDL feitas desde a criação do último arquivo de metadados gerado pelo Snowflake.

Você também pode criar metadados sob demanda usando a função SYSTEM$GET_ICEBERG_TABLE_INFORMATION. Para obter instruções, consulte Geração de instantâneos de alterações de DML.

Para obter informações sobre como localizar arquivos de metadados, consulte Diretórios de dados e metadados.

Visualização do histórico de criação de metadados

Para acessar um histórico completo de tentativas de geração de metadados, exiba o histórico de consulta da sua conta e filtre os resultados. Procure o nome da função SYSTEM$GET_ICEBERG_TABLE_INFORMATION no texto SQL.

O Snowflake usa internamente a mesma função SYSTEM$GET_ICEBERG_TABLE_INFORMATION para gerar metadados da tabela. As tentativas feitas pelo Snowflake aparecem no usuário chamado SYSTEM no histórico de consulta. A coluna STATUS no histórico de consulta indica se os metadados foram gerados com sucesso.

Para opções de exibição, consulte Monitoramento da atividade de consulta com o Histórico de consultas.

Exclusão

O Snowflake exclui metadados Iceberg do seu armazenamento em nuvem externo quando os seguintes eventos ocorrem:

  • Depois de você descartar uma tabela.

  • Quando os metadados Iceberg se referem a snapshots ou dados de tabela que expiraram.

A exclusão não ocorre imediatamente após o término do período de retenção de dados. Como resultado, o armazenamento de metadados pode incorrer em custos com seu provedor de armazenamento em nuvem por mais tempo do que a vida útil de uma tabela.

Aviso

O Snowflake não é compatível com fail-safe para tabelas Iceberg gerenciadas pelo Snowflake, visto que os dados da tabela estão em um armazenamento em nuvem externo gerenciado por você. Para proteger os dados da tabela Iceberg, você precisa configurar a proteção e recuperação de dados com seu provedor de nuvem.

Depois de descartar uma tabela

Ao remover uma tabela, você pode usar o comando UNDROP ICEBERG TABLE para restaurá-la dentro do período de retenção de dados.

Quando o período de retenção expira, o Snowflake exclui os metadados da tabela e os snapshots que ele gravou do local do seu volume externo. A exclusão ocorre de forma assíncrona e pode levar alguns dias para ser concluída após o término do período de retenção.

Nota

Para tabelas convertidas, o Snowflake exclui apenas metadados que foram gerados após a conversão da tabela.

Após a expiração dos snapshots

O Snowflake exclui os arquivos de metadados Iceberg relacionados a snapshots expirados após o término do período de retenção de dados. A exclusão geralmente ocorre de 7 a 14 dias após a expiração de um snapshot.

Somente snapshots de tabelas anteriores podem expirar. O Snowflake nunca exclui arquivos de metadados que representam o estado mais recente (atual) de uma tabela do seu armazenamento em nuvem externo.

Tabelas que usam um catálogo externo

Para tabelas que utilizam um catálogo externo, o Snowflake usa o valor do parâmetro DATA_RETENTION_TIME_IN_DAYS para definir um período de retenção para o Snowflake Time Travel e descartar a tabela. Quando o período de retenção expira, o Snowflake não exclui os metadados ou snapshots do Iceberg do seu armazenamento em nuvem externo.

O Snowflake define DATA_RETENTION_TIME_IN_DAYS ao nível da tabela para o menor dos seguintes valores:

  • O valor history.expire.max-snapshot-age-ms no arquivo de metadados atual. O Snowflake converte o valor em dias (arredondando para baixo).

  • O seguinte valor, dependendo da edição da sua conta Snowflake:

    • Standard Edition: 1 dia.

    • Enterprise Edition ou superior: 5 dias.

Você não pode alterar manualmente o valor de DATA_RETENTION_TIME_IN_DAYS em Snowflake. Para alterar o valor, você deve atualizar history.expire.max-snapshot-age-ms em seu arquivo de metadados e, em seguida, atualizar a tabela.

Time Travel

Com o Snowflake Time Travel, você pode usar o Snowflake para consultar dados históricos de uma tabela.

Você também pode usar um mecanismo de computação de terceiros para executar consultas de Time Travel em tabelas gerenciadas pelo Snowflake quando você usa Sincronizar uma tabela gerenciada pelo Snowflake com Snowflake Open Catalog ou ao usar o SDK do catálogo Snowflake.

Você pode consultar quaisquer snapshots que foram confirmados dentro do período de retenção de dados. Para especificar o período de retenção de dados, defina o parâmetro do objeto DATA_RETENTION_TIME_IN_DAYS.

Quando você exclui dados de tabela ou descarta uma tabela, o Snowflake exclui objetos após o período de retenção da tabela expirar. Isso pode gerar custos com seu provedor de armazenamento em nuvem por mais tempo do que a vida útil da tabela.