Usar um banco de dados vinculado a catálogo para tabelas Apache Iceberg™¶
Com um banco de dados vinculado a catálogo, você pode acessar várias tabelas Iceberg remotas do Snowflake sem criar tabelas gerenciadas externamente individuais.
Um banco de dados vinculado a catálogo é um banco de dados Snowflake conectado a um catálogo Iceberg REST externo. O Snowflake sincroniza automaticamente com o catálogo externo para detectar namespaces e tabelas Iceberg e registra as tabelas remotas no banco de dados vinculado a catálogo. Os bancos de dados vinculados a catálogo também oferecem suporte à criação e remoção de esquemas ou tabelas Iceberg.
Considerações sobre o uso de um banco de dados vinculado a catálogo para tabelas Iceberg¶
Importante
Durante o período de versão preliminar, os bancos de dados vinculados a catálogo não oferecem suporte ao modo somente leitura. Se você remover tabelas ou gravar dados, essas alterações também serão feitas no seu catálogo remoto.
Considere o seguinte ao usar um banco de dados vinculado a catálogo:
Aceito apenas quando você usa uma integração de catálogo para o Iceberg REST (por exemplo, Snowflake Open Catalog).
Faturamento: Durante o período de versão preliminar, o Snowflake não cobra por bancos de dados vinculados a catálogos. O faturamento começa quando bancos de dados vinculados a catálogos Apache Iceberg™ se tornam disponíveis ao público em geral.
Para limitar a descoberta automática de tabelas a um conjunto específico de namespaces, use o parâmetro ALLOWED_NAMESPACES. Você também pode usar o parâmetro BLOCKED_NAMESPACES para bloquear um conjunto de namespaces.
O Snowflake não sincroniza o controle de acesso a catálogo remoto (usuários ou funções).
Você pode criar esquemas ou tabelas Iceberg gerenciadas externamente em um banco de dados vinculado a catálogos. Atualmente, não há suporte para a criação de outros objetos Snowflake.
Latência:
Para bancos de dados vinculados a 7.500 namespaces em um catálogo remoto, a descoberta de namespaces e tabelas leva cerca de uma hora.
Para catálogos remotos com 500 mil tabelas, o processo de atualização automatizada leva cerca de uma hora para ser concluído. Para namespaces com diferentes requisitos de latência, recomendamos a criação de bancos de dados vinculados a catálogos separados. Cada banco de dados deve referenciar uma integração de catálogo com um intervalo de atualização automática apropriado (REFRESH_INTERVAL_SECONDS).
Para tabelas Iceberg em um banco de dados vinculado a catálogo:
O Snowflake não copia propriedades de tabelas de catálogo remoto (como políticas de retenção ou buffers) e atualmente não oferece suporte à alteração de propriedades de tabela.
A atualização automática está habilitada por padrão. Se o
table-uuid
de uma tabela externa e a tabela do banco de dados vinculado a catálogo não corresponderem, a atualização falhará e o Snowflake removerá a tabela do banco de dados vinculado a catálogo; o Snowflake não alterará a tabela remota.Se você remover uma tabela do catálogo remoto, o Snowflake a removerá do banco de dados vinculado a catálogo. Essa ação é assíncrona; portanto, você pode não ver a alteração no catálogo remoto imediatamente.
Se você renomear uma tabela no catálogo remoto, o Snowflake removerá a tabela existente do banco de dados vinculado a catálogo e criará uma tabela com o novo nome.
Políticas de mascaramento e tags são aceitas. Outros recursos específicos do Snowflake, incluindo replicação, clonagem e compartilhamento, não são aceitos.
O caractere escolhido para o parâmetro NAMESPACE_FLATTEN_DELIMITER não pode aparecer em seus namespaces remotos. Durante o processo de descoberta automática, o Snowflake ignora qualquer namespace que contenha o delimitador e não cria um esquema correspondente no seu banco de dados vinculado a catálogo.
Se você especificar algo diferente de
_
,$
, letras maiúsculas ou números para o parâmetro NAMESPACE_FLATTEN_DELIMITER, deverá colocar o nome do esquema entre aspas ao consultar a tabela.Para bancos de dados vinculados ao AWS Glue, você deve usar letras minúsculas e colocar os nomes do esquema, da tabela e das colunas entre aspas duplas. Isso também é necessário para outros catálogos Iceberg REST que aceitam apenas identificadores em minúsculas.
O exemplo a seguir mostra uma consulta válida:
CREATE SCHEMA "s1";
As instruções a seguir não são válidas porque usam letras maiúsculas ou omitem as aspas duplas:
CREATE SCHEMA s1; CREATE SCHEMA "Schema1";
O uso de UNDROP ICEBERG TABLE não é aceito.
Compartilhamentos com uma listagem são aceitos para tabelas que usam um volume externo. No momento, o compartilhamento direto não é aceito.
Para gravar em tabelas em um banco de dados vinculado a catálogo:
As credenciais fornecidas não são aceitas.
Gravações em tabelas em namespaces aninhados não são aceitas no momento.
Fluxo de trabalho para configurar o acesso ao seu catálogo externo e armazenamento de tabelas¶
As etapas a seguir abordam como criar um banco de dados vinculado a catálogo, verificar o status de sincronização entre o Snowflake e seu catálogo e criar ou consultar uma tabela no banco de dados.
Configurar o acesso ao seu catálogo externo e ao armazenamento de tabelas¶
Antes de criar um banco de dados vinculado a catálogo, escolha uma das seguintes opções para configurar o acesso ao seu catálogo externo e ao armazenamento de tabelas.
Opção 1: Configurar um volume externo e uma integração de catálogo¶
Com esta opção, você configura um volume externo e uma integração de catálogo. Escolha esta opção se o seu catálogo Iceberg remoto não oferecer suporte ao fornecimento de credenciais ou se você quiser gravar nas tabelas Iceberg em seu catálogo remoto.
Primeiro, configure um volume externo para o serviço de armazenamento em nuvem que armazena os dados e metadados das suas tabelas Iceberg remotas:
Em seguida, configure uma integração de catálogo para o seu catálogo Iceberg remoto:
Opção 2: Configurar uma integração de catálogo com credenciais fornecidas¶
Nota
Este recurso é compatível apenas com tabelas que armazenam seus dados e metadados no Amazon S3. Esta opção não é aceita atualmente para gravações externas.
Com essa opção, seu catálogo Iceberg remoto deve oferecer suporte ao fornecimento de credenciais.
Para obter instruções, consulte Use as credenciais fornecidas pelo catálogo para tabelas Apache Iceberg™.
Criar um banco de dados vinculado a catálogo¶
Crie um banco de dados vinculado a catálogo com o comando CREATE DATABASE (vinculado a catálogo):
O exemplo a seguir cria um banco de dados vinculado a catálogo que usa um volume externo. Ele especifica um intervalo de sincronização de 60 segundos (o padrão é 30). O intervalo de sincronização informa ao Snowflake com que frequência consultar seu catálogo remoto.
CREATE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_catalog_int',
BLOCKED_NAMESPACES = ('my_blocked_namespace'),
NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE,
NAMESPACE_FLATTEN_DELIMITER = '-'
SYNC_INTERVAL_SECONDS = 60
)
EXTERNAL_VOLUME = 'my_external_vol';
Nota
Este exemplo especifica NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE
, que informa ao Snowflake para vincular tabelas em todos os níveis de namespace do seu catálogo. Para uma tabela em um namespace aninhado, o Snowflake usa o parâmetro NAMESPACE_FLATTEN_DELIMITER para construir um namespace nivelado.
Para obter mais informações, consulte CREATE DATABASE (vinculado a catálogo).
Como alternativa, crie um banco de dados vinculado a catálogo que use credenciais fornecidas. Este exemplo também especifica um namespace permitido.
CREATE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_catalog_int_vended_creds',
ALLOWED_NAMESPACES = ('my_namespace')
);
Verificar o status de sincronização do catálogo¶
Para verificar se o Snowflake vinculou com sucesso o catálogo remoto ao banco de dados, use a função SYSTEM$CATALOG_LINK_STATUS.
A função também fornece informações para ajudar a identificar tabelas no catálogo remoto que não conseguiram fazer a sincronização.
SELECT SYSTEM$CATALOG_LINK_STATUS('my_linked_db');
Consultar uma tabela no seu banco de dados vinculado a catálogo¶
Após criar um banco de dados vinculado a catálogo, o Snowflake inicia o processo de descoberta de tabelas e consulta automaticamente o catálogo vinculado usando o valor do parâmetro SYNC_INTERVAL_SECONDS (com um intervalo padrão de 30 segundos) para verificar se há alterações.
No banco de dados, os namespaces permitidos do catálogo remoto aparecem como esquemas, e as tabelas Iceberg aparecem sob os respectivos esquemas.
Você pode consultar as tabelas remotas usando uma instrução SELECT.
Nota
O Snowflake converte automaticamente identificadores sem aspas (nomes de tabelas e colunas) para letras maiúsculas. Se o seu catálogo Iceberg externo usar identificadores que diferenciam maiúsculas de minúsculas, você deverá colocar os nomes das tabelas e colunas entre aspas duplas.
Para obter mais informações sobre identificadores de objetos, consulte Requisitos para identificadores.
Por exemplo:
USE DATABASE my_linked_db;
SELECT * FROM my_namespace.my_iceberg_table
LIMIT 20;
Gravar no seu catálogo remoto¶
Você pode usar o Snowflake para criar namespaces e tabelas Iceberg no seu catálogo vinculado. Para obter mais informações, consulte os seguintes tópicos: