Tabelas Iceberg

Uma tabela Iceberg usa a especificação de formato aberto de tabela Apache Iceberg, que fornece uma camada de abstração em arquivos de dados armazenados em formatos abertos e oferece suporte a recursos como:

  • Transações ACID (atomicidade, consistência, isolamento, durabilidade)

  • Evolução do esquema

  • Particionamento oculto

  • Instantâneos de tabela

As tabelas Iceberg para Snowflake combinam o desempenho e a semântica de consulta de tabelas regulares do Snowflake com armazenamento em nuvem externo que você gerencia. Elas são ideais para data lakes existentes que você não pode ou optou por não armazenar no Snowflake.

Snowflake oferece suporte a tabelas Iceberg que usam o formato de arquivo Apache Parquet.

Para obter uma introdução ao uso de tabelas Iceberg no Snowflake, consulte Guia de início rápido: introdução às tabelas Iceberg.

Como funcionam as tabelas Iceberg

Esta seção fornece informações específicas para trabalhar com tabelas Iceberg no Snowflake. Para saber mais sobre a especificação do formato da tabela Iceberg, consulte a documentação oficial do Apache Iceberg e as Especificações da tabela Iceberg.

Armazenamento de dados

As tabelas Iceberg armazenam seus dados e arquivos de metadados em um local de armazenamento em nuvem externo (Amazon S3, Google Cloud Storage ou Azure Storage). O armazenamento externo não faz parte do Snowflake. Você é responsável por todo o gerenciamento do local de armazenamento em nuvem externo. O Snowflake se conecta ao seu local de armazenamento usando um volume externo.

As tabelas Iceberg não incorrem em custos de armazenamento do Snowflake. Para obter mais informações, consulte Faturamento.

Volumes externos

Um volume externo é um objeto Snowflake nomeado no nível da conta que armazena uma entidade de gerenciamento de identidade e acesso (IAM) para seu armazenamento externo em nuvem. O Snowflake se conecta com segurança ao seu armazenamento em nuvem com um volume externo para acessar dados da tabela, metadados Iceberg e arquivos de manifesto que armazenam o esquema da tabela, partições e outros metadados.

Um único volume externo pode oferecer suporte a uma ou mais tabelas Iceberg.

Para configurar um volume externo para tabelas Iceberg, consulte Configuração de um volume externo para tabelas Iceberg.

Catálogo Iceberg

Um catálogo Iceberg permite que um mecanismo de computação gerencie e carregue tabelas Iceberg. O catálogo forma a primeira camada de arquitetura na especificação da tabela Iceberg e deve oferecer suporte ao seguinte:

  • Armazenar o ponteiro de metadados atual para uma ou mais tabelas Iceberg. Um ponteiro de metadados mapeia o nome de uma tabela para o local do arquivo de metadados atual dessa tabela.

  • Executar operações atômicas para que você possa atualizar o ponteiro de metadados atual de uma tabela.

Para saber mais sobre os catálogos Iceberg, consulte a documentação do Apache Iceberg.

O Snowflake oferece suporte a diferentes opções de catálogo. Por exemplo, você pode usar o Snowflake como o catálogo Iceberg ou usar uma integração de catálogo para conectar o Snowflake a um catálogo externo do Iceberg, como o AWS Glue, ou a arquivos de metadados do Iceberg no armazenamento de objetos.

Integrações de catálogo

Uma integração de catálogo é um objeto Snowflake nomeado no nível da conta que define a origem dos metadados e do esquema para uma tabela Iceberg quando você não usa o Snowflake como o catálogo Iceberg.

Uma única integração de catálogo pode oferecer suporte a uma ou mais tabelas Iceberg.

Para configurar uma integração de catálogo para tabelas Iceberg, consulte Configuração de uma integração de catálogo para tabelas Iceberg.

Metadados e instantâneos

Para tabelas que usam Snowflake como catálogo, o Snowflake gera automaticamente os metadados periodicamente. Em seguida, ele grava os metadados nos arquivos Parquet da tabela no seu volume externo.

Iceberg usa um modelo de consulta baseado em instantâneo, onde os arquivos de dados são mapeados usando arquivos de manifesto e metadados. Um instantâneo representa o estado de uma tabela em um determinado momento e é usado para acessar o conjunto completo de arquivos de dados na tabela.

Snowflake expira instantâneos de tabelas Iceberg mais antigos para reduzir o tamanho dos metadados da tabela.

Para determinar a idade máxima dos instantâneos, o Snowflake recupera o valor de history.expire.max-snapshot-age-ms do arquivo de metadados atual, converte o valor em dias (arredondando para baixo) e o armazena no parâmetro DATA_RETENTION_TIME_IN_DAYS.

Se o Snowflake não encontrar history.expire.max-snapshot-age-ms no arquivo de metadados ou não puder analisar o valor, ele definirá DATA_RETENTION_TIME_IN_DAYS como um valor padrão de 5 dias (o valor padrão do Apache Iceberg).

Nota

Não há suporte para o uso da history.expire.min-snapshots-to-keep propriedade de tabela para especificar o número mínimo padrão de instantâneos.

Suporte entre nuvens/entre regiões

O suporte entre nuvens/entre regiões depende do tipo de tabela Iceberg.

Tipo de tabela

Suporte entre nuvens/entre regiões

Notas

Tabelas que usam uma integração de catálogo

Se o local de armazenamento ativo do seu volume externo não estiver no mesmo provedor de nuvem ou na mesma região da sua conta Snowflake, as seguintes limitações serão aplicadas:

  • Você não pode usar a função SYSTEM$GET_ICEBERG_TABLE_INFORMATION para recuperar informações sobre o instantâneo atualizado mais recente.

  • Você não pode converter a tabela para usar o Snowflake como catálogo.

Tabelas que usam o Snowflake como o catálogo

Seu volume externo deve usar um local de armazenamento ativo com o mesmo provedor de nuvem (na mesma região) que hospeda sua conta Snowflake.

Se o local ativo não estiver na mesma região, a instrução CREATE ICEBERG TABLE retornará um erro do usuário.

Faturamento

O Snowflake fatura sua conta pelo uso do warehouse virtual (computação) e pelos serviços de nuvem quando você trabalha com tabelas Iceberg.

A Snowflake não fatura sua conta pelo seguinte:

  • Custos de armazenamento da tabela Iceberg. Seu provedor de armazenamento em nuvem faz a cobrança diretamente pelo uso do armazenamento de dados.

  • Bytes ativos usados pelas tabelas Iceberg. No entanto, o Exibição TABLE_STORAGE_METRICS exibe ACTIVE_BYTES para tabelas Iceberg para ajudar você a controlar quanto armazenamento uma tabela ocupa.

Opções de catálogo Iceberg

Ao criar uma tabela Iceberg no Snowflake, você pode usar o Snowflake como o catálogo Iceberg ou pode usar uma integração de catálogo.

A tabela a seguir resume as diferenças entre essas opções de catálogo.

Uso do Snowflake como o catálogo Iceberg

Uso de uma integração de catálogo

Acesso de leitura

Acesso de gravação

❌ Para suporte completo da plataforma, você pode converter a tabela para usar Snowflake como catálogo.

Armazenamento de dados e metadados

Volume externo (armazenamento em nuvem)

Volume externo (armazenamento em nuvem)

Suporte completo à plataforma

Funciona com o SDK do catálogo Iceberg do Snowflake

Uso do Snowflake como o catálogo Iceberg

Uma tabela Iceberg que usa Snowflake como catálogo Iceberg fornece suporte completo à plataforma Snowflake com acesso de leitura e gravação. Os dados e metadados da tabela são armazenados em armazenamento em nuvem externo, que o Snowflake acessa usando um volume externo. Snowflake cuida de toda a manutenção do ciclo de vida, como compactação, da tabela.

How Iceberg tables that use Snowflake as the Iceberg catalog work

Uso de uma integração de catálogo

Uma tabela Iceberg que usa uma integração de catálogo oferece suporte limitado à plataforma Snowflake com acesso somente leitura. Os dados e metadados da tabela são armazenados em armazenamento em nuvem externo, que o Snowflake acessa usando um volume externo. Com esse tipo de tabela, o Snowflake usa a integração do catálogo para recuperar informações sobre os metadados e o esquema do Iceberg. Snowflake não assume nenhum gerenciamento de ciclo de vida.

Você pode usar esta opção para criar uma tabela Iceberg que usa um catálogo Iceberg externo, como AWS Glue, ou para criar uma tabela a partir de arquivos de metadados Iceberg no armazenamento de objetos. O diagrama a seguir mostra como uma tabela Iceberg usa uma integração de catálogo com um catálogo Iceberg externo.

How Iceberg tables that use a catalog integration work

Considerações e limitações

As seguintes considerações e limitações se aplicam às tabelas Iceberg e estão sujeitas a alterações:

Iceberg

  • As versões 1 e 2 da especificação Apache Iceberg são suportadas, excluindo os seguintes recursos:

    • Exclusões em nível de linha (exclusões de posição ou exclusões de igualdade).

    • Usando a history.expire.min-snapshots-to-keep propriedade da tabela para especificar o número mínimo padrão de instantâneos a serem mantidos. Para obter mais informações, consulte Metadados e instantâneos.

  • O particionamento Iceberg com a função de transformação bucket afeta o desempenho de consultas que usam cláusulas condicionais para filtrar resultados.

  • As tabelas Iceberg criadas a partir de arquivos no armazenamento de objetos não serão suportadas se as seguintes condições forem verdadeiras:

    • A tabela contém uma especificação de partição que define uma transformação de identidade.

    • A coluna de origem da especificação de partição não existe em um arquivo Parquet.

  • Para tabelas Iceberg que não são gerenciadas pelo Snowflake, o Time Travel para qualquer instantâneo gerado após a criação da tabela é suportada, desde que você atualize periodicamente a tabela antes que o instantâneo expire.

Formatos de arquivo

  • O suporte é limitado a arquivos Apache Parquet.

  • Arquivos Parquet que usam o tipo lógico inteiro não assinado não são suportados.

Volumes externos

  • Você deve acessar os locais de armazenamento em nuvem em volumes externos usando credenciais diretas. As integrações de armazenamento não são suportadas.

  • A relação de confiança deve ser configurada separadamente para cada volume externo criado.

Arquivos de metadados

  • Os arquivos de metadados não identificam o instantâneo mais recente de uma tabela Iceberg.

  • Você não pode modificar o local dos arquivos de dados ou instantâneos usando o comando ALTER ICEBERG TABLE. Para modificar qualquer uma dessas configurações, você deve recriar a tabela (usando a sintaxe CREATE OR REPLACE ICEBERG TABLE).

Recursos Snowflake

  • Os seguintes recursos e ações não são atualmente suportados nas tabelas Iceberg:

    • Criação de um clone de uma tabela Iceberg. Além disso, os clones de bancos de dados e esquemas não incluem tabelas Iceberg.

    • Aplicação automática de tags usando o procedimento armazenado ASSOCIATE_SEMANTIC_CATEGORY_TAGS.

    • Evolução do esquema Snowflake. No entanto, as tabelas Iceberg que usam Snowflake como catálogo oferecem suporte à evolução do esquema Iceberg.

      Nota

      As tabelas criadas antes da versão do Snowflake 7.42 não são compatíveis com a evolução do esquema Iceberg.

    • Criação de tabelas Iceberg temporárias ou transitórias.

    • Replicação de tabelas Iceberg, volumes externos ou integrações de catálogo.

    • Concessão ou revogação de privilégios para tabelas Iceberg, volumes externos ou integrações de catálogo de ou para um compartilhamento.

  • A consulta de dados históricos é compatível com tabelas Iceberg.

  • O suporte ao clustering depende do tipo de tabela Iceberg.

    Tipo de tabela

    Notas

    Tabelas que usam Snowflake como catálogo Iceberg

    Defina uma chave de clustering usando o comando CREATE ICEBERG TABLE ou ALTER ICEBERG TABLE. Para definir ou gerenciar uma chave de clustering, consulte CREATE ICEBERG TABLE e ALTER ICEBERG TABLE.

    Tabelas que usam uma integração de catálogo

    Clustering não é suportado.

    Tabelas convertidas

    O Snowflake apenas clusteriza arquivos se eles tiverem sido criados após a conversão da tabela ou se os arquivos tiverem sido modificados usando uma instrução DML.

Acesso de clientes terceiros aos dados e metadados do Iceberg

  • Clientes de terceiros não podem anexar, excluir ou atualizar dados em tabelas Iceberg que usam Snowflake como catálogo.

Próximos tópicos: