Visão geral do Snowflake Open Catalog

O Snowflake Open Catalog é uma implementação de catálogo para tabelas Apache Iceberg™ e é criado no protocolo REST de código aberto Apache Iceberg™.

Com o Open Catalog, você pode fornecer acesso centralizado e seguro de leitura e gravação às suas tabelas Iceberg em diferentes mecanismos de consulta compatíveis com REST.

Atualmente, o Open Catalog é oferecido como um serviço hospedado na infraestrutura gerenciada pelo Snowflake.

Diagrama conceitual do Open Catalog.

Inscrição

O Open Catalog oferece as seguintes opções de inscrição:

  • Para clientes Snowflake existentes: Entre em uma conta Snowflake existente como administrador da organização e crie uma nova conta Open Catalog em sua organização Snowflake. Usuários com a função ORGADMIN no Snowflake podem gerenciar a conta do Open Catalog no Snowflake. Para obter instruções, consulte Criação de uma conta do Snowflake Open Catalog.

  • Se você ainda não é cliente Snowflake: você pode experimentar o Snowflake Open Catalog gratuitamente por 30 dias inscrevendo-se para uma conta de avaliação da Snowflake. Para obter instruções, consulte Experimente o Snowflake Open Catalog gratuitamente.

Principais conceitos

Esta seção apresenta os principais conceitos associados ao uso do Open Catalog hospedado no Snowflake.

No diagrama a seguir, um amostra de Estrutura do Open Catalog com namespaces aninhados é mostrado para Catalog1. Nenhuma tabela ou namespace foi criado ainda para Catalog2 ou Catalog3.

Diagrama que mostra um exemplo de estrutura do Open Catalog.

Catálogo

No Open Catalog, você pode criar um ou mais recursos de catálogo para organizar tabelas Iceberg.

Configure seu catálogo configurando valores na configuração de armazenamento para S3, Azure ou Google Cloud Storage. Um catálogo Iceberg permite que um mecanismo de consulta gerencie e organize tabelas. O catálogo forma a primeira camada arquitetônica na especificação da tabela Apache Iceberg™ e deve oferecer suporte às seguintes tarefas:

  • 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.

  • Execute operações atômicas para que você possa atualizar o ponteiro de metadados atual de uma tabela para o ponteiro de metadados de uma nova versão da tabela.

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

Tipos de catálogo

Um catálogo pode ser um dos dois tipos a seguir:

  • Interno: O catálogo é gerenciado pelo Open Catalog. As tabelas deste catálogo podem ser lidas e escritas no Open Catalog.

  • Externo: O catálogo é gerenciado externamente por outro provedor de catálogo Iceberg (por exemplo, Snowflake, Glue, Dremio Arctic). As tabelas deste catálogo são sincronizadas com o Open Catalog. Essas tabelas são somente leitura no Open Catalog. No lançamento atual, apenas um catálogo externo do Snowflake é fornecido.

Um catálogo é configurado com uma configuração de armazenamento que pode apontar para o S3, armazenamento do Azure ou GCS.

Para criar um novo catálogo, consulte Criação de um catálogo.

Namespace

Você cria namespaces para agrupar logicamente tabelas Iceberg dentro de um catálogo. Um catálogo pode ter vários namespaces. Você também pode criar namespaces aninhados. As tabelas Iceberg pertencem a namespaces.

Tabelas e catálogos do Apache Iceberg™

Em um catálogo interno, uma tabela Iceberg é registrada no Open Catalog, mas lida e gravada por meio de mecanismos de consulta. Os dados e metadados da tabela são armazenados em seu armazenamento em nuvem externo. A tabela usa o Open Catalog como catálogo Iceberg.

Se você tiver tabelas que usam o Snowflake como catálogo Iceberg (tabelas gerenciadas pelo Snowflake), poderá sincronizar essas tabelas com um catálogo externo no Open Catalog. Se você sincronizar este catálogo com o Open Catalog, ele aparecerá como um catálogo externo no Open Catalog. Os dados e metadados da tabela são armazenados em seu armazenamento em nuvem externo. O mecanismo de consulta Snowflake pode ler ou gravar nessas tabelas. Entretanto, os outros mecanismos de consulta só podem ler essas tabelas.

Importante

Para que os privilégios de acesso definidos para um catálogo sejam aplicados corretamente, as seguintes condições devem ser atendidas:

  • O diretório contém apenas os arquivos de dados que pertencem a uma única tabela.

  • A hierarquia de diretório corresponde à hierarquia de namespace do catálogo.

Por exemplo, se um catálogo inclui os seguintes itens:

  • Namespace de nível superior namespace1

  • Namespace aninhado namespace1a

  • Uma tabela de clientes, que é agrupada sob o namespace aninhado namespace1a

  • Uma tabela de pedidos, que é agrupada sob o namespace aninhado namespace1a

A hierarquia de diretório para o catálogo deve seguir esta estrutura:

  • /namespace1/namespace1a/customers/<somente arquivos para a tabela de clientes>

  • /namespace1/namespace1a/orders/<somente arquivos para a tabela de pedidos>

Entidade de serviço

Uma entidade de serviço é uma entidade que você cria no Open Catalog. Cada entidade de serviço encapsula credenciais que você usa para se conectar ao Open Catalog.

Os mecanismos de consulta usam princípios de serviço para se conectar aos catálogos.

O Open Catalog gera um par de ID de cliente e segredo de cliente para cada entidade de serviço.

A tabela a seguir exibe exemplos de entidades de serviço que você pode criar no Open Catalog:

Nome da conexão de serviço

Objetivo

Ingestão de Flink

Para que o Apache Flink® ingira dados de streaming nas tabelas do Apache Iceberg™.

Pipeline de ETL Spark

Para que o Apache Spark™ execute trabalhos de pipeline de ETL em tabelas Iceberg.

Pipelines de dados Snowflake

Para que o Snowflake execute pipelines de dados para transformar dados em tabelas Apache Iceberg™.

Painel de BI no Trino

Para que o Trino execute consultas BI para alimentar um painel.

Equipe de AI do Snowflake

Para que o Snowflake execute trabalhos de AI em dados em tabelas Apache Iceberg™.

Conexão de serviço

Uma conexão de serviço representa um mecanismo compatível com REST (como Apache Spark™, Apache Flink® ou Trino) que pode ler e gravar no Open Catalog. Ao criar uma nova conexão de serviço, o administrador do Open Catalog concede à entidade de serviço criada com a nova conexão de serviço uma função de entidade nova ou existente. Uma função de entidade é um recurso no Open Catalog que você pode usar para agrupar logicamente os principais serviços do Open Catalog e conceder privilégios em objetos protegíveis. Para obter mais informações, consulte Função de entidade. O Open Catalog usa um modelo de controle de acesso baseado em funções (RBAC) para conceder às entidades de serviço acesso aos recursos. Para obter mais informações, consulte Controle de acesso. Para um diagrama deste modelo, consulte [modelo de RBAC](access-control.md#rbac-model “Modelo RBAC»).

Se o administrador do Open Catalog conceder à entidade de serviço para a nova conexão de serviço uma nova função de entidade, a entidade de serviço ainda não terá nenhum privilégio concedido a ela. Ao proteger o catálogo ao qual a nova conexão de serviço se conectará, o administrador do Open Catalog concede privilégios às funções de catálogo e, em seguida, concede essas funções de catálogo à nova função de entidade. Como resultado, a entidade de serviço para a nova conexão de serviço tem esses privilégios. Para obter mais informações sobre funções de catálogo, consulte Função de catálogo.

Se o administrador do Open Catalog conceder uma função de entidade existente à entidade de serviço para a nova conexão de serviço, a entidade de serviço receberá os privilégios concedidos às funções de catálogo que são concedidos à função de entidade existente. Se necessário, o administrador do Open Catalog pode conceder funções de catálogo adicionais à função de entidade existente ou remover funções de catálogo dela para ajustar os privilégios concedidos à entidade principal do serviço. Para um exemplo de como o RBAC funciona no Open Catalog, consulte exemplo de RBAC.

Configuração de armazenamento

Uma configuração de armazenamento guarda uma entidade de gerenciamento de identidade e acesso (IAM) gerada para seu armazenamento em nuvem externo e é criada quando você cria um catálogo. A configuração de armazenamento é usada para definir os valores para conectar o Open Catalog ao seu armazenamento em nuvem. Durante o processo de criação do catálogo, uma entidade IAM é gerada e usada para criar uma relação de confiança entre o provedor de armazenamento em nuvem e o Open Catalog.

Ao criar um catálogo, você fornece as seguintes informações sobre seu armazenamento em nuvem externo:

Provedor de armazenamento em nuvem

Informações

Amazon S3

<ul><li>Local base padrão para seu bucket Amazon S3</li><li>Locais para seu bucket Amazon S3</li><li>ARN da função S3</li><li>ID externo (opcional)</li></ul>

Google Cloud Storage (GCS)

<ul><li>Local base padrão para seu bucket GCS</li><li>Locais para seu bucket GCS</li></ul>

Azure

<ul><li>Local base padrão para seu contêiner Microsoft Azure</li><li>Locais para seu contêiner Microsoft Azure</li><li>ID do locatário do Azure</li></ul>

Exemplo de fluxo de trabalho

No fluxo de trabalho de exemplo a seguir, Bob cria uma tabela Apache Iceberg™ chamada Table1 e Alice lê dados da Table1.

  1. Bob usa o Apache Spark™ para criar a tabela Table1 no namespace Namespace1 no catálogo Catalog1 e inserir valores na Table1.

    Bob pode criar a Table1 e inserir dados nela porque ele está usando uma conexão de serviço com uma entidade de serviço que tem privilégios para executar essas ações.

  2. Alice usa o Snowflake para ler dados da Table1.

    Alice pode ler dados de Table1 porque está usando uma conexão de serviço com uma entidade de serviço com uma integração de catálogo que tem privilégios para executar esta ação. Alice cria uma tabela não gerenciada no Snowflake para ler dados da Table1.

Diagrama que mostra um exemplo de fluxo de trabalho para o Open Catalog

Segurança e controle de acesso

Esta seção descreve a segurança e o controle de acesso.

Fornecimento de credencial

Para proteger interações com conexões de serviço, o Open Catalog fornece credenciais de armazenamento temporário ao mecanismo de consulta durante a execução da consulta. Essas credenciais permitem que o mecanismo de consulta execute a consulta sem exigir acesso ao seu armazenamento em nuvem externo para tabelas Iceberg. Esse processo é chamado de fornecimento de credencial.

Gerenciamento de identidade e acesso (IAM)

O Open Catalog usa a entidade de gerenciamento de identidade e acesso (IAM) para conectar-se com segurança ao seu armazenamento e acessar dados de tabela, metadados Iceberg e arquivos de manifesto que armazenam o esquema de tabela, partições e outros metadados. O Open Catalog retém a entidade IAM para seu local de armazenamento.

Controle de acesso

O Open Catalog aplica o controle de acesso que você configura em todas as tabelas registradas no serviço e controla a segurança de todas as consultas de mecanismos de consulta de maneira consistente.

O Open Catalog usa um modelo de controle de acesso baseado em função (RBAC) que permite configurar centralmente o acesso de entidades de serviço do Open Catalog a catálogos, namespaces e tabelas.

O RBAC do Open Catalog usa dois tipos diferentes de função para delegar privilégios:

  • Funções de entidade: Concedidas às entidades de serviço do Open Catalog e análogas às funções em outros sistemas de controle de acesso que você concede às entidades de serviço.

  • Funções do catálogo: Configuradas com certos privilégios em recursos do Open Catalog e concedidas às funções de entidades.

Para obter mais informações, consulte Controle de acesso.

Faturamento

O Open Catalog é gratuito durante os primeiros seis meses após a disponibilidade geral. O faturamento começará em 30 de abril de 2025.

Quando o faturamento começa, a Snowflake cobra de sua conta as solicitações às REST APIs compatíveis pelo serviço do Open Catalog. Para obter mais informações, consulte a Tabela de recursos sem servidor em Tabela de consumo de serviços Snowflake.

Snowflake não cobra de sua conta os custos de armazenamento da tabela Iceberg. Seu provedor de armazenamento em nuvem faz a cobrança diretamente pelo uso do armazenamento de dados.