Transações atômicas em tabelas Delta Lake e Apache Iceberg no Databricks
Agora é possível executar blocos SQL atômicos em múltiplas tabelas Delta Lake e Iceberg gerenciadas pelo Unity Catalog usando Catalog Commits.
O que mudou
O Databricks liberou em disponibilidade geral (GA) o suporte a transações SQL em tabelas gerenciadas Delta Lake e Apache Iceberg via Unity Catalog. Com esse recurso, comandos executados em múltiplas tabelas são agrupados em uma única transação atômica, garantindo que todas as alterações sejam confirmadas juntas ou revertidas em caso de falha.
Para que serve
Imagine que você precisa atualizar o estoque em uma tabela e registrar a venda em outra tabela na mesma operação. Se uma das etapas falhar, os dados ficam inconsistentes. Com as transações atômicas, você pode:
- Agrupar múltiplos comandos SQL de leitura e escrita em uma transação única.
- Garantir integridade de dados (ACID) entre tabelas distintas gerenciadas pelo Unity Catalog.
- Operar conjuntamente tabelas nos formatos Delta Lake e Apache Iceberg.
Como usar
Para participar de transações, as tabelas precisam ter o recurso de Catalog Commits habilitado via propriedade delta.feature.catalogManaged.
Primeiro, crie uma tabela nova com o recurso ou altere uma tabela existente:
-- Criando uma nova tabela gerenciada
CREATE TABLE meu_catalogo.vendas.pedidos (
pedido_id BIGINT,
valor DECIMAL(10,2),
data_pedido DATE
)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
-- Habilitando em tabela gerenciada existente
ALTER TABLE meu_catalogo.vendas.estoque
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
O que acontece nesse código:
- A primeira instrução cria a tabela
pedidoscom commits coordenados diretamente no catálogo. - A segunda instrução altera a tabela
estoquejá existente para habilitar o gerenciamento de commits pelo Unity Catalog.
Com o recurso habilitado nas tabelas participantes, execute a transação atômica usando BEGIN TRANSACTION ou BEGIN ATOMIC:
BEGIN TRANSACTION;
INSERT INTO meu_catalogo.vendas.pedidos VALUES (101, 150.00, current_date());
UPDATE meu_catalogo.vendas.estoque SET quantidade = quantidade - 1 WHERE produto_id = 42;
COMMIT;
O que acontece nesse código:
- O comando
BEGIN TRANSACTIONinicia o bloco transacional. - O
INSERTe oUPDATEsão executados de forma isolada. - O comando
COMMITaplica as mudanças em ambas as tabelas de maneira atômica; se houver erro, nada é gravado.
Para conferir se o recurso está ativo em uma tabela:
DESCRIBE DETAIL meu_catalogo.vendas.pedidos;
Limitações e requisitos
- As transações estão em GA, mas o recurso subjacente de Catalog Commits está listado em Beta.
- Requer tabelas gerenciadas pelo Unity Catalog (Delta ou Apache Iceberg), streaming tables ou materialized views.
- Para ler, gravar ou criar tabelas gerenciadas com catalog commits, exige Databricks Runtime 16.4 ou superior.
- Para habilitar ou desabilitar o recurso em tabelas gerenciadas existentes, é necessário Databricks Runtime 18.0 ou superior.
- Em streaming tables e materialized views, a leitura e escrita exigem Databricks Runtime 17.3 ou superior (ou compute serverless no Spark Declarative Pipelines), e desabilitar exige Databricks Runtime 18 LTS ou superior.
- Não é possível ativar ou desativar o recurso em tabelas existentes usando
CREATE OR REPLACE TABLEouREPLACE TABLE; useALTER TABLE. - Streaming tables com catalog commits não podem ser acessadas por clusters single-user.
Como aplicar num pipeline
Em pipelines de ingestão ou conciliação financeira na camada Silver ou Gold, use os blocos transacionais para atualizar tabelas de fatos e dimensões correlacionadas no mesmo commit, evitando leituras intermediárias inconsistentes por dashboards ou relatórios.
- unity catalog
- delta lake
- apache iceberg
- transactions
- catalog commits
Transactions support both managed Delta Lake and Apache Iceberg tables
Resumo e explicação gerados por IA a partir da release note oficial. Em caso de dúvida, a documentação oficial da plataforma prevalece.
Relacionadas
- DatabricksBeta
Conector do SurveyMonkey chega ao Lakeflow Connect no Databricks
O Lakeflow Connect agora conta com conector nativo para o SurveyMonkey em Beta, permitindo ingestão incremental de pesquisas, respostas e contatos com governança no Unity Catalog.
lakeflow connect · surveymonkey - DatabricksBeta
Lakeflow Connect adiciona conector do Oracle Eloqua em Beta
O Lakeflow Connect agora oferece um conector gerenciado em Beta para o Oracle Eloqua, permitindo ingestão incremental de dados de marketing governados pelo Unity Catalog.
lakeflow connect · oracle eloqua - DatabricksBeta
Ingira métricas do GA4 com o novo conector do Lakeflow Connect
O Lakeflow Connect ganha conector gerenciado em Beta para o Google Analytics 4, permitindo ingestão incremental de relatórios agregados via API com governança no Unity Catalog.
lakeflow connect · google analytics