Pular para o conteúdo principal

Conceitos de tabelas do Databricks

O Databricks oferece suporte a três tipos de tabela principais (gerenciadas, externas e estrangeiras) e dois formatos de armazenamento abertos (Delta Lake e Apache Iceberg). Escolher a combinação certa determina como os dados são armazenados, governados e otimizados.

Uma tabela do Databricks reside em um esquema e contém linhas de dados. O tipo de tabela default criado em Databricks é uma tabela gerenciar Unity Catalog.

Formatos de armazenamento

Os formatos de armazenamento definem como os dados são estruturados fisicamente e rastreados no armazenamento de objetos.

A Databricks oferece suporte a dois formatos principais de armazenamento de tabela aberta:

  • Delta Lake é o formato de armazenamento default para gerenciar tabelas externas no Databricks. Delta também é compatível com tabelas estrangeiras.
  • O Apache Iceberg é compatível com tabelas gerenciadas e tabelas externas no Databricks. Esse formato é útil quando você está se integrando ao ecossistema Iceberg.

Ambos os formatos adicionam uma camada de armazenamento transacional que rastreia metadados e oferece suporte à compliance com ACID (Atomicidade, Consistência, Isolamento e Durabilidade), viagem do tempo e outros recursos.

Tipos de mesa

Os tipos de tabela no Databricks definem como os dados são possuídos e acessados.

O Databricks suporta três tipos principais de tabelas. Os tipos de tabela são determinados pelo catálogo que detém e gerencia os arquivos de dados subjacentes, conforme descrito na tabela a seguir:

Tipo de mesa

Gerenciando o catálogo

Suporte de leitura/gravação

Otimização do desempenho

Otimização do custo de armazenamento

Gerenciadas

Unity Catalog

Sim

Sim

Sim

Temporário

Nenhuma (com escopo de sessão tabela)

Sim

Sim

Sim

Externo

Nenhum (somente arquivos)

Sim

Somente manual

Somente manual

Externo

Um sistema externo ou serviço de catálogo

Somente leitura

Não

Não

Para obter informação sobre como selecionar o tipo de tabela correto para seu caso de uso, consulte Selecionar um tipo de tabela.

gerenciar tabelas

Para tabelas gerenciadas, o Unity Catalog gerencia tanto os arquivos de dados quanto os metadados da tabela. Os arquivos de dados são armazenados no local de armazenamento gerenciado do Unity Catalog no armazenamento em cloud. As tabelas gerenciar do Unity Catalog são o default ao criar tabelas no Databricks.

O Databricks recomenda que você use tabelas gerenciadas sempre que criar uma nova tabela. Tabelas gerenciadas implementam automaticamente melhorias de desempenho, reduzem os custos de armazenamento e compute e habilitam o acesso para sistemas externos, como o Trino. Consulte Tabelas gerenciadas.

O exemplo a seguir mostra uma tabela gerenciada chamada prod.people_ops_employees que contém dados sobre cinco funcionários:

Exemplo de tabela contendo dados de funcionários

Tabelas externas

Tabelas externas, às vezes chamadas de tabelas não gerenciadas , referenciam dados armazenados em um sistema de armazenamento externo, como o armazenamento de objetos em cloud. O Databricks registra os metadados da tabela, mas não gerencia os arquivos de dados subjacentes. O Unity Catalog suporta tabelas externas em vários formatos, incluindo o Delta Lake, o que permite lê-las com sistemas externos. Consulte Tabelas externas.

Tabelas estrangeiras

As tabelas estrangeiras representam dados armazenados em sistemas externos conectados a Databricks por meio da Lakehouse Federation. As tabelas estrangeiras são somente leitura nos Databricks. Consulte Tabelas estrangeiras.

Mesas temporárias

Tabelas temporárias são tabelas com escopo de sessão que armazenam dados pela duração de uma sessão do Databricks. Elas são úteis para materializar resultados intermediários sem criar tabelas permanentes em seu catálogo. O Databricks descarta automaticamente as tabelas temporárias quando a sessão termina, e você não precisa de privilégios de catálogo ou esquema para criá-las. Consulte Tabelas temporárias no Databricks SQL e no Databricks Runtime.

Selecione um tipo de tabela

Use *tabelas gerenciadas* para a maioria das novas tabelas. O Databricks automatiza a otimização, o gerenciamento do ciclo de vida do armazenamento e o acesso externo.

Use *tabelas externas* quando:

  • É necessário fazer o registro de dados existentes no armazenamento em cloud sem movê-los.
  • É necessário acesso direto baseado em caminho de clientes não Databricks.
  • Você está trabalhando com formatos de arquivo não compatíveis com tabelas gerenciadas, como CSV ou JSON.
  • Excluir a tabela não deve apagar os arquivos de dados subjacentes.

Use *tabelas externas* quando precisar de acesso somente leitura a dados em um sistema externo conectado por meio da Federação Lakehouse, como um Hive metastore ou catálogo do AWS Glue.

Para formato de armazenamento, o Delta Lake é o default e o recomendado para a maioria das cargas de trabalho. Use Apache Iceberg ao integrar com sistemas externos que exigem o formato Iceberg.

Tabelas no Unity Catalog

No Unity Catalog, as tabelas existem no terceiro nível do namespace de três níveis (catalog.schema.table), conforme mostrado no diagrama a seguir:

Diagrama do modelo de objeto do Unity Catalog, com foco na tabela

Permissões básicas de tabela

A maioria das operações de tabela exige as permissões USE CATALOG e USE SCHEMA no catálogo e no esquema que contém uma tabela.

A tabela a seguir resume as permissões adicionais necessárias para operações comuns de tabela no Unity Catalog:

Operação

Permissões

Criar tabela

CREATE TABLE no esquema que o contém

Consultar uma tabela

SELECT na mesa

Atualizar, excluir, merge ou inserir dados em uma tabela

SELECT e MODIFY na mesa

Solte uma mesa

MANAGE na mesa

Substituir uma tabela

MANAGE na tabela, CREATE TABLE no esquema que o contém

Para obter uma referência da sintaxe SQL para essas operações, consulte:

Para obter mais informações sobre as permissões do site Unity Catalog, consulte gerenciar privilégios em Unity Catalog.