Armazenamento do Snowflake para tabelas Apache Iceberg™¶
O Snowflake é compatível com o armazenamento do Snowflake para tabelas Apache Iceberg™.
Assim como as tabelas padrão do Snowflake, esse recurso permite criar tabelas Iceberg gerenciadas pelo Snowflake no Snowflake. Com essa opção, o Snowflake armazena e gerencia os arquivos de tabela Iceberg para você usando o armazenamento (interno) do Snowflake, para que você não precise configurar o acesso ao armazenamento em nuvem externo.
Esse recurso funciona com o Snowflake Horizon Catalog, para que você possa usar um mecanismo de consulta externo para se conectar a uma tabela Iceberg que usa o armazenamento do Snowflake. Para obter mais informações, consulte Acessar tabelas Apache Iceberg™ com um mecanismo externo por meio do Snowflake Horizon Catalog. Além disso, você pode consultar essas mesmas tabelas no Snowflake.
Nota
Esse recurso está disponível atualmente apenas para contas hospedadas na Amazon Web Services (AWS) ou no Azure. Esse recurso não está disponível em regiões governamentais ou na República Popular da China.
Como funciona o armazenamento do Snowflake¶
Quando você cria uma tabela Iceberg com o armazenamento do Snowflake, o Snowflake gerencia todos os arquivos de dados e metadados internamente. Você não precisa configurar um volume externo nem conceder ao Snowflake acesso ao seu armazenamento em nuvem.
Criar uma tabela Iceberg com o armazenamento do Snowflake¶
Tabela TRANSIENT explícita com armazenamento gerenciado pelo Snowflake:
CATALOGdeve serSNOWFLAKEpara esse modelo de armazenamento. Se o catálogo padrão da sua conta for o Snowflake, você poderá omitirCATALOG.EXTERNAL_VOLUMEdeve serSNOWFLAKE_MANAGEDquando você está usando o armazenamento do Snowflake. Se o seu volume externo padrão forSNOWFLAKE_MANAGED, você poderá omitirEXTERNAL_VOLUME.
O volume externo de SNOWFLAKE_MANAGED ¶
EXTERNAL_VOLUME = 'SNOWFLAKE_MANAGED' seleciona o armazenamento fornecido pelo Snowflake para a tabela. SNOWFLAKE_MANAGED é um valor reservado, não um objeto de volume externo criado pelo usuário. Você não executa CREATE EXTERNAL VOLUME para esse caminho.
Para tabelas Iceberg que armazenam arquivos em seu armazenamento em nuvem, você cria um volume externo, concede USAGE e define EXTERNAL_VOLUME para o nome desse volume. Para obter instruções, consulte Configuração de um volume externo.
Tabelas permanentes e transitórias¶
As tabelas Iceberg que usam o armazenamento do Snowflake podem ser permanentes ou transitórias:
Permanente (padrão): os dados da tabela são protegidos por Fail-safe, o mesmo recurso de recuperação de dados de 7 dias que o Snowflake fornece para tabelas padrão.
Transitória: os dados da tabela não são protegidos por Fail-safe. O comportamento de armazenamento e do Time Travel segue o das tabelas transitórias no Snowflake. As tabelas transitórias não incorrem em custos de armazenamento do Fail-safe.
Use a palavra-chave TRANSIENT na instrução CREATE ICEBERG TABLE para criar uma tabela Iceberg transitória.
Nota
As tabelas Iceberg transitórias são compatíveis apenas com o armazenamento do Snowflake. Não é possível criar uma tabela Iceberg transitória que use um volume externo gerenciado pelo cliente.
Dica
Para verificar se uma tabela Iceberg existente é permanente ou transitória, execute SHOW TABLES e observe a coluna kind. O valor é TRANSIENT para as tabelas transitórias e TABLE para as permanentes.
Catálogo padrão e volume externo¶
Se você omitir CATALOG e EXTERNAL_VOLUME na instrução, o Snowflake os resolverá a partir dos padrões de esquema, banco de dados e conta (o esquema substitui o banco de dados, o banco de dados substitui a conta). Quando o catálogo efetivo é o Snowflake (CATALOG = 'SNOWFLAKE'), o volume externo padrão é SNOWFLAKE_MANAGED, a menos que um padrão diferente seja definido em um nível inferior. Para obter mais informações, consulte Definir um catálogo padrão no nível da conta, do banco de dados ou do esquema e Definir um volume externo padrão no nível da conta, do banco de dados ou do esquema.
Quando você define CATALOG = 'SNOWFLAKE' explicitamente, o volume externo padrão é SNOWFLAKE_MANAGED, a menos que você o substitua por EXTERNAL_VOLUME ou por um padrão de esquema, banco de dados ou conta que nomeie outro volume.
Replicação¶
Você pode replicar tabelas Iceberg que usam o armazenamento do Snowflake utilizando um grupo de replicação ou failover. Para habilitar a replicação dessas tabelas, você deve primeiro habilitar a replicação para tabelas Iceberg gerenciadas pelo Snowflake seguindo as etapas em Configuração da replicação para tabelas Apache Iceberg™ gerenciadas pelo Snowflake.
Ao contrário das tabelas Iceberg gerenciadas pelo Snowflake padrão, você não precisa incluir EXTERNAL VOLUMES na lista OBJECT_TYPES do seu grupo de replicação ou failover. O Snowflake gerencia automaticamente o armazenamento para tabelas replicadas que usam o volume externo SNOWFLAKE_MANAGED.
Por exemplo, crie um grupo de failover que replique um banco de dados contendo tabelas Iceberg que usam o armazenamento do Snowflake:
Considerações sobre replicação¶
A replicação para contas hospedadas no Google Cloud Platform (GCP) não é compatível. O Snowflake ignora tabelas Iceberg que usam o armazenamento do Snowflake durante operações de atualização quando a conta de destino está hospedada no GCP.
Se você criou tabelas Iceberg durante a versão preliminar privada usando um volume externo diferente de
SNOWFLAKE_MANAGED, o Snowflake migra automaticamente a tabela replicada na conta secundária para usar o volumeSNOWFLAKE_MANAGED. Observe o seguinte sobre essa migração:Se você incluir
EXTERNAL VOLUMESna listaOBJECT_TYPESdo grupo de replicação ou failover, o volume externo da versão preliminar privada será replicado para a conta secundária, mas não será anexado à tabela. Todos os usos do volume externo da versão preliminar privada na conta secundária serão bloqueados.A Snowflake recomenda que você descarte todas as tabelas Iceberg que usam um volume externo da versão preliminar privada e as recrie usando
EXTERNAL_VOLUME = SNOWFLAKE_MANAGEDantes de habilitar a replicação.
Faturamento¶
O Snowflake cobra da sua conta o seguinte uso:
Custo de armazenamento¶
O Snowflake cobra por cada byte armazenado no Snowflake.
O Snowflake agrega o uso de armazenamento para tabelas Iceberg que usam armazenamento do Snowflake na coluna
STORAGE_BYTESdo Exibição STORAGE_USAGE, juntamente com o uso de armazenamento para tabelas que não são Iceberg. Somente os arquivos que são confirmados no catálogo são incluídos emSTORAGE_BYTES. O Snowflake não cobra por confirmações abandonadas.O custo para esse uso de armazenamento é descrito na Tabela 3(a) da tabela de consumo de serviços do Snowflake no site do Snowflake.
Custo da solicitação¶
Nota
Sempre que você usa um mecanismo de consulta por meio do Horizon Catalog para acessar tabelas do Iceberg armazenadas no Snowflake, o mecanismo de consulta é considerado um mecanismo de consulta externo. Quando você usa um mecanismo de consulta externo para acessar essas tabelas, o Snowflake cobra esse acesso da sua conta.
A lista a seguir descreve alguns casos em que mecanismos de consulta externos acessam tabelas do Iceberg armazenadas no Snowflake:
Mecanismos do Snowflake que acessam a tabela por meio do Horizon Catalog de outra conta Snowflake. Por exemplo, se uma tabela for gerenciada pela conta Snowflake A, mas você acessar a tabela a partir do mecanismo do Snowflake na conta B por meio do Horizon Catalog, você será cobrado por esse acesso. Você é cobrado por esse acesso porque o mecanismo do Snowflake na conta B é um mecanismo de consulta externo.
Mecanismos de consulta de terceiros que você implanta na rede Snowflake usando Snowflake Container Services. Quando você usa esses mecanismos por meio do Horizon Catalog para acessar a tabela, o mecanismo é externo e as solicitações são cobradas da mesma forma que outros mecanismos de consulta de terceiros.
Mecanismos de consulta de terceiros que você implanta fora do Snowflake e usa para se conectar à tabela por meio do Horizon Catalog.
O Snowflake não cobra sua conta quando você usa o mecanismo de consulta do Snowflake para acessar diretamente essas tabelas do Iceberg, o que significa que você não as acessa pelo Horizon Catalog. Por exemplo, se uma tabela for gerenciada pela conta A e você usar o mecanismo do Snowflake na conta A para acessar a tabela, você não será cobrado por esse acesso.
Quando você usa um mecanismo de consulta externo por meio do Snowflake Horizon Catalog para acessar tabelas do Iceberg que usam o armazenamento do Snowflake, o Snowflake cobra da sua conta uma taxa por solicitação para cada solicitação HTTP enviada ao sistema de armazenamento subjacente. A taxa depende do tipo de solicitação:
Operações PUT, COPY, POST, PATCH e LIST, que são cobradas como «classe 1».
Operações GET e SELECT, que são cobradas como «classe 2».
Para visualizar a contagem de solicitações para esses tipos de operação, use a visualização do uso da conta STORAGE_REQUEST_HISTORY. Este uso é faturado nas SKUs
STORAGE_REQUEST-1eSTORAGE_REQUEST-2no relatório de faturamento.Essa taxa é descrita na Tabela 3(g) da tabela de consumo de serviços do Snowflake.
Custo de transferência de dados¶
Quando você usa um mecanismo de consulta externo por meio do Horizon Catalog para acessar a tabela de uma região diferente ou com outro provedor de nuvem, uma taxa padrão de transferência de dados é cobrada por byte.
Essa taxa de transferência de dados é descrita nas Tabelas 4(a), 4(b) e 4(c) da tabela de consumo de serviços do Snowflake.
Para obter mais informações, consulte Explicação do custo de transferência de dados.
Conectividade privada¶
Quando você usa um mecanismo de consulta externo para acessar tabelas Iceberg que usam armazenamento do Snowflake, é possível configurar a conectividade privada para que o tráfego não passe pela internet pública.
Para obter instruções de configuração, consulte Para volumes de armazenamento gerenciados pelo Snowflake.
Considerações e limitações¶
Considere o seguinte ao trabalhar com tabelas Iceberg que usam armazenamento do Snowflake.
Suporte ao provedor de nuvem¶
Esse recurso está disponível atualmente apenas para contas hospedadas na Amazon Web Services (AWS) ou no Microsoft Azure. Esse recurso não está disponível em regiões governamentais ou na República Popular da China.
Criptografia¶
As tabelas Iceberg que usam armazenamento do Snowflake são compatíveis apenas com criptografia do lado do servidor (server-side encryption, SSE). Chaves gerenciadas pelo cliente (customer-managed keys, CMK) não são compatíveis, mesmo que sua conta tenha o Tri-Secret Secure ativado.
Comportamento de clonagem¶
Aviso
A tabela Iceberg que você cria usa credenciais fornecidas pelo catálogo. Quando você clona uma tabela Iceberg que usa credenciais fornecidas pelo catálogo, a tabela clonada compartilha a mesma localização base da tabela de origem. É possível utilizar as mesmas credenciais para acessar o local base compartilhado; portanto, a tabela clonada tem acesso de gravação à tabela de origem.
Para tabelas que usam armazenamento gerenciado pelo Snowflake (EXTERNAL_VOLUME = 'SNOWFLAKE_MANAGED'), CREATE ICEBERG TABLE ... CLONE só terá sucesso quando a tabela de origem e a nova tabela forem ambas transitórias ou permanentes. Se uma for transitória e a outra for permanente, a instrução falhará.
Tabela de origem |
Clone |
Resultado |
|---|---|---|
Transitória |
Transitória |
Com suporte |
Permanente |
Permanente |
Com suporte |
Transitória |
Permanente |
Sem suporte |
Permanente |
Transitória |
Sem suporte |
Para obter a sintaxe do comando e mais informações sobre o comportamento de clonagem, consulte CREATE ICEBERG TABLE … CLONE em CREATE ICEBERG TABLE (Snowflake como o catálogo Iceberg) e Clonagem e tabelas Apache Iceberg™.
Ingestão de dados¶
Você pode ingerir dados em tabelas Iceberg que usam o armazenamento do Snowflake usando os seguintes métodos:
Snowpipe: Use o Snowpipe para carregar dados de arquivos no armazenamento em nuvem usando COPY INTO. O Snowpipe funciona com tabelas Iceberg permanentes e transitórias.
Snowpipe Streaming: Use o alto desempenho do Snowpipe Streaming para ingerir dados de streaming. O Snowpipe Streaming funciona com tabelas Iceberg permanentes e transitórias.