Pular para o conteúdo principal

Tabelas gerenciadas do Unity Catalog para Delta Lake e Apache Iceberg

As tabelas gerenciadas pelo Unity Catalog são o tipo de tabela padrão e recomendado no Databricks para Delta Lake e Apache Iceberg. O Unity Catalog gerencia todas as responsabilidades de leitura, gravação, armazenamento e otimização. Consulte Converter uma tabela Delta Lake externa em uma tabela gerenciada do Unity Catalog.

Os arquivos de dados das tabelas gerenciais são armazenados no esquema ou catálogo que as contém. Consulte Especificar um local de armazenamento gerenciar em Unity Catalog.

A Databricks recomenda o uso de tabelas gerenciadas para aproveitar os seguintes benefícios, em comparação com tabelas externas e estrangeiras:

  • Redução dos custos de armazenamento e compute.
  • Desempenho de consulta mais rápido em todos os tipos de clientes.
  • Manutenção e otimização automáticas da mesa.
  • Acesso seguro para clientes externos através de APIs abertas.
  • Suporte para formatos Delta Lake e Apache Iceberg.
  • Atualizações automáticas para o recurso de plataforma mais recente.

O senhor pode trabalhar com tabelas gerenciáveis em todos os idiomas e produtos suportados no site Databricks. O senhor precisa de determinados privilégios para criar, atualizar, excluir ou consultar tabelas gerenciais. Consulte gerenciar privilégios em Unity Catalog.

nota

Esta página descreve apenas tabelas gerenciadas do Unity Catalog. Para tabelas gerenciadas no Hive metastore legado, consulte Objetos de banco de dados no Hive metastore legado.

Benefícios das tabelas gerenciadas do Unity Catalog

As tabelas gerenciadas do Unity Catalog otimizam os custos de armazenamento e a velocidade das consultas, e permitem a interoperabilidade com ferramentas de terceiros para Delta Lake e Apache Iceberg. Para simplificar a gestão de dados e o desempenho, essas tabelas gerenciadas usam tecnologias baseadas em AI, como compactação de tamanho de arquivo e coleta inteligente de estatísticas.

As tabelas gerenciadas oferecem suporte à interoperabilidade, permitindo o acesso de clientes Delta Lake e Apache Iceberg. Consulte Acesse dados do Databricks usando sistemas externos.

Os seguintes recursos são exclusivos das tabelas gerenciadas pelo Unity Catalog e não estão disponíveis para tabelas externas e tabelas estrangeiras:

Recurso

Benefícios

Configuração

Commits do Catálogo

Habilita transações multi-declaração em tabelas, planejamento de consulta mais rápido ao fornecer metadados diretamente do Unity Catalog, alterações de esquema e restrições aplicáveis e gravações seguras de mecanismos externos.

Desativado por padrão.

Para ativar, defina a propriedade de tabela delta.feature.catalogManaged . Consulte Ativar commits de catálogo.

Otimização preditiva

Otimiza automaticamente a disposição e o compute de seus dados usando IA, sem a necessidade de operações manuais de manutenção. A Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas a fim de reduzir os custos de armazenamento e compute.

Executa automaticamente:

Habilitado por default para todas as novas contas criadas em ou após 11 de novembro de 2024. Para contas atuais, o Databricks está habilitando gradualmente a otimização preditiva por default. Consulte Verificar se a otimização preditiva está habilitada.

Para configurar, consulte Ativar otimização preditiva.

Transações com vários comandos

Permite executar várias instruções SQL em uma ou mais tabelas como um único commit atômico, com garantias ACID. Todas as alterações são aplicadas em conjunto ou revertidas em conjunto. Use para procedimentos armazenados e scripts SQL em cargas de trabalho de data warehousing mais importantes.

Transações que gravam em tabelas gerenciadas do Delta Lake estão em pré-lançamento público.

Transações que gravam em tabelas Apache Iceberg gerenciadas estão em Prévia Particular.

Desativado por padrão.

Use BEGIN ATOMIC ... END; para transações não interativas ou BEGIN TRANSACTION; ... COMMIT; para transações interativas. Consulte Modos de transação.

Líquido automático clustering

Para tabelas com otimização preditiva, o clustering líquido seleciona de forma inteligente as chaves de clusterização e as atualiza automaticamente conforme os padrões de consulta mudam, para melhorar o desempenho e reduzir os custos.

Desativado por padrão.

Para configurar, consulte Ativar clustering líquido.

Armazenamento em cache de metadados

O cache em memória de metadados de transação aprimora o desempenho de queries, minimizando as solicitações para o log de transações armazenado na cloud.

Ativado por padrão. Não configurável.

Índices de pesquisa de texto completo

Acelera pesquisas de substring e palavra-chave em colunas de texto usando as funções search e isearch. Quando um índice é aplicado, o Databricks ignora arquivos que não podem conter linhas correspondentes, reduzindo a quantidade de dados verificados.

Em versão Beta e requer o Databricks Runtime 18.2 ou acima.

Desativado por padrão.

Criar com CREATE SEARCH INDEX.

Exclusão automática de arquivos após um comando DROP TABLE

Se você DROP uma tabela gerenciada, a Databricks exclui os arquivos de dados no armazenamento em cloud após o período de recuperação expirar (default 7 dias), reduzindo os custos de armazenamento. Para tabelas externas, é necessário excluir manualmente os arquivos do seu bucket de armazenamento.

Habilitado por default. É possível configurar o período de recuperação no nível do catálogo ou do esquema. Consulte Descartar uma tabela gerenciada.

Acessar dados do Databricks usando sistemas externos

As tabelas gerenciadas oferecem suporte à interoperabilidade , permitindo o acesso de clientes Delta Lake e Apache Iceberg.

Através de APIs abertas e fornecimento de credenciais, o Unity Catalog permite que engines externos, como Trino, DuckDB, Apache Spark, Daft e engines integrados a catálogos REST do Iceberg, como o Dremio, acessem tabelas gerenciadas. Para clientes externos que não suportam APIs abertas, você pode usar o Mode de Compatibilidade para ler tabelas gerenciadas usando qualquer cliente Delta Lake ou Apache Iceberg. OpenSharing, um protocolo de código aberto, permite o compartilhamento seguro e governado de dados com parceiros e plataformas externas.

Consulte integrações para obter uma lista de engines externos compatíveis ou verifique a documentação do seu engine se ele não estiver incluído nesta lista.

As seguintes APIs abertas permitem que sistemas externos acessem as tabelas gerenciadas pelo Unity Catalog:

  • A API REST do Unity oferece acesso de leitura, gravação e criação para clientes do Delta Lake em tabelas gerenciadas do Delta Lake.
  • O Iceberg REST Catalog (IRC) oferece acesso de leitura, gravação e criação para clientes Apache Iceberg em tabelas gerenciadas do Apache Iceberg, além de acesso somente leitura a tabelas do Delta Lake com leituras do Apache Iceberg habilitadas (UniForm).

Ambas as APIs suportam o fornecimento de credenciais, que oferece credenciais temporárias e com escopo definido, as quais herdam os privilégios da entidade solicitante do Databricks, mantendo os controles de governança e segurança.

OpenSharing é um protocolo de código aberto que permite acesso seguro e governado a dados para parceiros e plataformas externas. Você pode usar o OpenSharing para conceder aos parceiros acesso temporário somente de leitura.

Todas as leituras e gravações em tabelas gerenciadas devem usar nomes de tabela e nomes de catálogo e esquema onde existirem. Por exemplo, catalog_name.schema_name.table_name. O acesso baseado em caminho a tabelas gerenciadas do Unity Catalog não é compatível (exceto no Compatibility Mode) porque ignora os controles de acesso do Unity Catalog e pode resultar em possível corrupção ou perda de dados dependendo da sua versão do Databricks Runtime ou do cliente OSS.

Criar uma tabela gerenciadora

Para criar uma tabela gerenciar, o senhor deve ter:

  • USE SCHEMA no esquema principal da tabela.
  • USE CATALOG no catálogo principal da tabela.
  • CREATE TABLE no esquema principal da tabela.

Use a seguinte sintaxe para criar uma tabela gerenciada vazia. Substitua os valores do espaço reservado:

  • <catalog-name>: nome do catálogo que conterá a tabela.
  • <schema-name>: o nome do esquema contendo a tabela.
  • <table-name>: Um nome para a tabela.
  • <column-specification>: o nome e o tipo de dados de cada coluna.
SQL
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
)
USING iceberg;

Para manter o desempenho nas leituras e gravações, o Databricks executa operações periodicamente para otimizar os metadados de tabelas Apache Iceberg gerenciadas. Esta tarefa é executada usando compute serverless, que possui MODIFY permissões na tabela Apache Iceberg. Esta operação grava apenas nos metadados da tabela, e o compute mantém apenas as permissões para a tabela durante a duração do Job.

nota

Para criar uma tabela Apache Iceberg, especifique explicitamente USING iceberg. Caso contrário, o Databricks cria uma tabela Delta Lake por padrão.

O senhor pode criar tabelas gerenciar a partir de resultados de consultas ou DataFrame escrever operações. Os artigos a seguir demonstram alguns dos muitos padrões que o senhor pode usar para criar uma mesa de gerenciar em Databricks:

Para criar uma cópia de uma tabela gerenciada existente, usa-se o clone. Tabelas do Delta Lake gerenciadas suportam clonagem profunda e rasa. As tabelas gerenciadas do Apache Iceberg suportam apenas clonagem profunda. Consulte Clonar uma tabela no Databricks e Clonar uma tabela Iceberg gerenciada.

Soltar uma tabela gerenciar

Para descartar uma tabela gerenciar, o senhor deve ter:

  • MANAGE na mesa ou você deve ser o dono da mesa.
  • USE SCHEMA no esquema principal da tabela.
  • USE CATALOG no catálogo principal da tabela.

Para descartar uma tabela gerenciada, execute o seguinte comando:

SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

O Unity Catalog suporta o comando UNDROP TABLE para recuperar tabelas gerenciadas descartadas acidentalmente. Por default, as tabelas são recuperáveis por 7 dias após serem removidas. Após o término do período de recuperação, a Databricks exclui os arquivos de dados subjacentes do seu tenant de nuvem em até 48 horas.

Configure o período de recuperação

info

Pré-lançamento público

O período de recuperação configurável está em Pré-lançamento público.

Você pode configurar por quanto tempo as tabelas gerenciadas descartadas permanecem recuperáveis no nível de catálogo ou esquema. Se os períodos de recuperação forem definidos em ambos os níveis, a configuração em nível de esquema terá precedência para tabelas nesse esquema.

Para configurar o período de recuperação, o usuário deve ter MANAGE privilégio ou propriedade no catálogo ou esquema. Esta configuração se aplica apenas a tabelas descartadas depois de configurada. Não afeta tabelas que já foram descartadas.

O período de recuperação pode ser definido para 0 horas (para desativar a recuperação) ou entre 7–30 dias, inclusive. Um período de recuperação mais longo (até 30 dias) oferece proteção adicional contra exclusões acidentais de dados críticos de produção. Um período de recuperação mais curto, ou defini-lo como 0, faz com que os dados descartados sejam excluídos mais rapidamente, útil para economia de custos em cargas de trabalho que criam e descartam tabelas frequentemente como parte de pipelines ETL. Definir o período de recuperação para 0 significa que as tabelas descartadas não são recuperáveis utilizando UNDROP. Os arquivos de dados são excluídos do armazenamento em cloud em até 48 horas após a tabela ser descartada.

Para definir o período de recuperação, use ALTER CATALOG ou ALTER SCHEMA com a cláusula RETAIN DROPPED TO:

SQL
-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;

-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;

Você também pode definir o período de recuperação ao criar um catálogo ou esquema com a cláusula RETAIN DROPPED FOR:

SQL
CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;

Para verificar o período atual de recuperação, execute DESCRIBE EXTENDED. A saída inclui Recovery Period Hours linha:

SQL
DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;