Pular para o conteúdo principal

Compatibilidade de recursos e protocolos do Delta Lake

Este artigo fornece uma visão geral dos protocolos do Delta Lake, recursos de tabela e compatibilidade com clientes do Delta Lake para leituras e gravações.

O log de transações para uma tabela Delta Lake contém informações de versionamento de protocolo. Consulte Revise os detalhes da tabela com a descrição detalhada.

Como o protocolo da tabela especifica a compatibilidade para leitura e gravação?

Cada tabela do Delta Lake tem uma especificação de protocolo que indica o conjunto de recursos necessários para ler e gravar na tabela. A especificação do protocolo é usada por aplicativos que leem ou gravam na tabela para determinar se eles podem lidar com todos os recursos que a tabela suporta. Se um aplicativo não souber como lidar com um recurso que está listado como compatível no protocolo de uma tabela, então esse aplicativo não poderá ler ou gravar nessa tabela.

A maioria dos novos recursos e funcionalidades adicionados ao Delta Lake exigem a atualização do protocolo da tabela.

A tabela a seguir apresenta uma visão geral dos termos-chave usados para descrever os protocolos do Delta Lake:

Termo

Descrição

Cliente Delta Lake

Qualquer sistema que lê ou grava em uma tabela Delta Lake.

Ler protocolo

Especifica o suporte exigido para que um cliente Delta Lake leia uma tabela.

Gravar protocolo

Especifica o suporte necessário para um cliente Delta Lake gravar em uma tabela.

minReaderVersion

Componente do protocolo de leitura. Valores válidos são 1, 2 ou 3.

minWriterVersion

Componente do protocolo de gravação. Valores válidos são inteiros de 2 a 7.

Recurso de tabela

Uma alternativa refinada para versões de protocolo. Os recursos da tabela correspondem aos recursos do Delta Lake ativados opcionalmente.

Recurso do Writer

Um recurso de tabela ligado a um protocolo de gravação.

Recurso de leitor

Um recurso de tabela vinculado a um protocolo de leitura.

Os protocolos de gravação e os recursos do gravador afetam apenas a compatibilidade com clientes gravadores, o que significa que o acesso somente leitura à tabela de cargas de trabalho herdadas ainda é suportado. Protocolos de leitura e recursos do leitor afetam tanto a compatibilidade de leitura quanto de gravação.

Nem todos os recursos do Delta Lake são compatíveis entre si.

Alguns recursos de tabela não podem ser removidos uma vez habilitados. Consulte Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo da tabela.

Recursos de tabela para compatibilidade de protocolo

No Databricks Runtime 12.2 LTS e acima, o Databricks usa recursos de tabela para indicar suporte para recursos e compatibilidade com leitores e gravadores. Recursos da tabela utilizam sinalizadores granulares para especificar quais recursos são suportados por uma determinada tabela. Os recursos de tabela substituem o esquema de versionamento de protocolo legado ao introduzir novos recursos ao protocolo do Delta Lake.

Os recursos do gravador de tabela indicam recursos que afetam a forma como os dados são gravados. Recursos de gravação de tabela exigem que minWriterVersion == 7. Recursos implementados como recursos de gravação não bloqueiam clientes leitores.

Recursos do leitor de tabela indicam recursos que afetam a maneira como os dados são lidos. Todos os recursos de leitura de tabela são também recursos de gravação de tabela. Recursos do leitor de tabela exigem minReaderVersion == 3 e minWriterVersion == 7. Um cliente não pode gravar em uma tabela que não consegue ler.

Quando os recursos da tabela são habilitados, todos os recursos suportados pelo protocolo para a tabela aparecem nas listas respectivas como readerFeatures ou writerFeatures. Ao descartar recursos de uma tabela, a tabela poderá remover este comportamento para se adequar ao protocolo mais baixo possível. Consulte Menor protocolo possível.

Versões de protocolo baseadas em inteiros e compatibilidade herdada

Todas as tabelas incluem uma versão de protocolo inteira, representada por minReaderVersion e minWriterVersion. A funcionalidade implementada usando recursos de tabela se baseia nessas versões de protocolo, mas muitos clientes de leitura e gravação legados continuam a usar as versões de protocolo para gerenciar a compatibilidade. Delta Lake tenta resolver o protocolo da tabela para a versão mais baixa possível para manter a máxima compatibilidade com clientes Delta modernos e legados. Consulte Menor protocolo possível.

No esquema de versionamento de protocolo baseado em número inteiro, cada número de versão agrupa múltiplos recursos, e os recursos em diferentes números de versão são cumulativos. Isso significa que, para estar em conformidade com o protocolo Delta, os clientes devem implementar suporte para todos os recursos de leitor ou gravador presentes em uma determinada versão, incluindo todos os recursos lançados anteriormente.

nota

Databricks inclui suporte parcial sem quebras para recursos de tabela em todas as versões compatíveis do Databricks Runtime. Clientes Delta OSS escolhem como implementar suporte para determinados recursos.

Quando o protocolo da tabela é alterado?

O protocolo para uma tabela muda nas seguintes condições:

  • Se um novo recurso for ativado, o protocolo será atualizado.
  • Se um recurso de tabela for descartado, o protocolo será rebaixado.

A desativação de um recurso de tabela não resulta em downgrade de protocolo. É necessário descartar o recurso para removê-lo completamente do protocolo da tabela. Nem todos os recursos da tabela podem ser descartados. Consulte Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo da tabela.

Todas as operações de alteração de protocolo conflitam com todas as gravações concorrentes.

As leituras de transmissão falham quando encontram um commit que altera os metadados da tabela. Para que a transmissão continue, é preciso reiniciá-la. Para métodos recomendados, consulte Considerações de produção para transmissão estructurada.

atenção

A maioria das atualizações da versão do protocolo são irreversíveis, e a atualização da versão do protocolo pode comprometer os leitores, gravadores ou ambos das tabelas existentes do Delta Lake. O Databricks recomenda que você atualize tabelas específicas apenas quando necessário, como para ativar novos recursos do Delta Lake. O senhor também deve verificar se todas as suas ferramentas de produção atuais e futuras são compatíveis com as tabelas Delta Lake com a nova versão do protocolo.

Rebaixamentos de protocolo estão disponíveis para alguns recursos. Consulte Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo da tabela.

Quando o protocolo da tabela é atualizado?

Ao habilitar um recurso em uma tabela, o protocolo da tabela é automaticamente atualizado. Alguns recursos são habilitados automaticamente com base na sintaxe usada nas declarações de tabela CREATE ou ALTER, enquanto outros recursos exigem habilitação explícita por meio da definição de propriedades da tabela. Às vezes, é necessário habilitar explicitamente múltiplos recursos de tabela para oferecer suporte à funcionalidade desejada. Em outros casos, a habilitação da funcionalidade poderá ativar automaticamente outros recursos da tabela. Consulte a documentação da Databricks para verificar a funcionalidade e a sintaxe utilizadas, a fim de determinar quais recursos de tabela são necessários.

Os recursos de leitura exigem a atualização tanto do protocolo de leitura quanto do protocolo de gravação. Recursos do gravador exigem apenas a atualização do protocolo de gravação.

Por exemplo, o suporte para restrições de CHECK é um recurso de gravador: apenas aplicativos de escrita precisam saber sobre as restrições de CHECK e impô-las.

Em contraste, o mapeamento de coluna exige a atualização dos protocolos de leitura e gravação. Como os dados são armazenados de forma diferente na tabela, aplicações de leitura devem compreender o mapeamento de colunas para que possam ler os dados corretamente.

nota

A Databricks não recomenda alterar as propriedades da tabela minReaderVersion e minWriterVersion. A alteração destas propriedades da tabela não impede a atualização de protocolo. Definir esses valores para um valor menor não faz o downgrade da tabela. Consulte Remover um recurso de tabela Delta Lake e fazer downgrade do protocolo da tabela.

O menor protocolo possível

Por default, o Delta Lake tenta usar o protocolo mais baixo possível para representar todos os recursos marcados como suportados pela tabela.

Esse comportamento só pode resultar em reduzir o protocolo da tabela, o que significa que o minReaderVersion ou o minWriterVersion podem ser alterados para valores mais baixos para uma tabela.

Você deve executar o DROP FEATURE comando para remover um recurso de tabela da lista de recursos suportados no protocolo da tabela. Os recursos da tabela nunca são descartados automaticamente.

Se todos os recursos do Delta Lake presentes em uma tabela forem totalmente suportados em uma versão de protocolo inferior, a tabela pode reverter para uma versão de protocolo que não utilize recursos da tabela para indicar a compatibilidade de leitura e gravação. Quando este downgrade de protocolo ocorre, a tabela pode remover ou o readerFeatures ou ambos readerFeatures e writerFeatures do protocolo da tabela. Isto não resulta em nenhum recurso do Delta Lake sendo desabilitado e só ocorre quando os recursos da tabela não são necessários no protocolo da tabela.

Todas as alterações que reduzem o protocolo da tabela aumentam a compatibilidade com clientes de leitura e gravação. Isso ocorre porque os clientes leitores e gravadores devem respeitar versões de protocolo inferiores, mesmo que ofereçam suporte a versões de protocolo superiores.

Os recursos da tabela alteram a forma como os recursos do Delta Lake são habilitados?

Se a interação com tabelas Delta Lake for exclusivamente via Databricks, é possível continuar a acompanhar o suporte para os recursos do Delta Lake utilizando os requisitos mínimos do Databricks Runtime. O Databricks oferece suporte à leitura de tabelas Delta Lake que foram atualizadas para recursos de tabela em todas as versões LTS do Databricks Runtime, desde que todos os recursos usados pela tabela sejam compatíveis com essa versão.

Se você ler e gravar de tabelas do Delta Lake usando outros sistemas, talvez seja necessário considerar como os recursos da tabela impactam a compatibilidade, porque há um risco de que o sistema não consiga entender as versões de protocolo atualizadas.

importante

Os recursos de tabela são introduzidos no formato Delta Lake para a versão 7 do gravador e versão 3 do leitor. A Databricks fez o backport do código para todas as versões LTS do Databricks Runtime com suporte para adicionar suporte para recursos de tabela, mas **apenas para os recursos já suportados nesse Databricks Runtime**. Isso significa que, embora você possa optar por usar recursos de tabela para habilitar colunas geradas e ainda trabalhar com essas tabelas no Databricks Runtime 9.1 LTS, tabelas com colunas de identidade habilitadas (o que requer Databricks Runtime 10.4 LTS) ainda não são suportadas nesse Databricks Runtime.

Como o Databricks gerencia a compatibilidade de recursos do Delta Lake?

O Databricks apresenta suporte para novos recursos e otimizações do Delta Lake que se baseiam no Delta Lake nas versões do Databricks Runtime. As otimizações do Databricks que alavancam os recursos do Delta Lake respeitam os protocolos usados no OSS Delta Lake para compatibilidade. Muitas otimizações do Databricks exigem a habilitação de recursos do Delta Lake em uma tabela, e alguns produtos do Databricks, como o Lakeflow Spark Declarative Pipelines, dependem de muitos recursos da tabela.

  • Todas as tabelas gravadas por versões mais baixas do Databricks Runtime têm suporte total de leitura e gravação em versões superiores do Databricks Runtime.
  • Tabelas gravadas por versões superiores do Databricks Runtime podem usar recursos de tabela que não são compatíveis com versões inferiores do Databricks Runtime.
    • Alguns recursos podem permitir gravações de versões anteriores do Databricks Runtime sem aplicar totalmente todas as otimizações relacionadas aos recursos de tabela habilitados.

Ao trabalhar com recursos de tabela que possuem suporte de backport para versões inferiores do Databricks Runtime, algumas operações executadas em uma determinada versão do Databricks Runtime podem não ser executadas na versão correspondente do Delta OSS. Se o seu ciclo de desenvolvimento ou arquitetura de dados incluir o OSS Delta Lake, deve-se sempre testar a compatibilidade em clientes OSS Delta antes de habilitar recursos de tabela em tabelas de produção.

Recursos do Delta Lake e versões do Databricks Runtime necessárias

Os recursos são habilitados tabela por tabela. A tabela a seguir lista a versão mais baixa do Databricks Runtime com suporte total para o recurso indicado. O suporte completo significa que toda a funcionalidade geralmente disponível para leituras e gravações é suportada.

Recurso

Requer versão do Databricks Runtime ou superior

Documentação

CHECK restrições

Todas as versões do Databricks Runtime compatíveis

Definir uma restrição CHECK no Databricks

Alterar feed de dados

Todas as versões do Databricks Runtime compatíveis

Usar o feed de dados de alteração no Databricks

Colunas geradas

Todas as versões do Databricks Runtime compatíveis

Colunas geradas pelo Delta Lake

Mapeamento de coluna

Todas as versões do Databricks Runtime compatíveis

Renomeie e solte colunas com mapeamento de coluna Delta Lake

Colunas de identidade

Todas as versões do Databricks Runtime compatíveis

Use colunas de identidade em Delta Lake

Recursos da tabela

Databricks Runtime 12.2 LTS

Recursos de tabela para compatibilidade de protocolo

Vetores de deleção

Databricks Runtime 12.2 LTS

Vetores de deleção no Databricks

TimestampNTZ

Databricks Runtime 13.3 LTS

TIMESTAMP_NTZ Tipo

UniForm

Databricks Runtime 13.3 LTS

Ler tabelas Delta Lake com clientes Iceberg

Clusters líquidos

Databricks Runtime 13.3 LTS

Usar cluster líquido para tabelas

Acompanhamento de linha

Databricks Runtime 14.3 LTS

Acompanhamento de linha em Databricks

Ampliação de tipo

Databricks Runtime 15.4 LTS

Ampliação de tipo

Variante

Databricks Runtime 15.4 LTS

Compatibilidade com tipo Variant

Colações

Databricks Runtime 16.1

Suporte a collations para Delta Lake

Pontos de verificação protegidos

Databricks Runtime 16.3

Remover um recurso da tabela Delta Lake e fazer downgrade do protocolo da tabela

Commits do Catálogo

Databricks Runtime 16.4 LTS

Commits do Catálogo

Consulte Notas sobre a versão e compatibilidade do Databricks Runtime.

nota

Lakeflow Spark Declarative Pipelines e Databricks SQL atualizam automaticamente os ambientes de runtime com lançamentos regulares para dar suporte a novos recursos. Consulte notas sobre a versão do LakeFlow Spark Declarative Pipelines e o processo de atualização da versão e notas sobre a versão do Databricks SQL.

Recursos por versão de protocolo

A tabela a seguir lista os requisitos de versão de protocolo para recursos de tabela do Delta Lake e do Apache Iceberg. O tipo de recurso indica se um recurso deve ser respeitado apenas para gravações ou para leituras e gravações.

O Delta Lake usa valores de minReaderVersion e minWriterVersion separados para especificar os recursos do protocolo. O protocolo de código aberto do Delta Lake padronizou o uso de recursos de tabela, mas alguns clientes ainda usam o versionamento de protocolo legado. Alguns clientes podem não oferecer suporte a todos os recursos, portanto, consulte a documentação do seu cliente e teste a compatibilidade antes de habilitar novos recursos em tabelas de produção.

Apache Iceberg usa uma única format-version em vez de versões separadas de leitor e gravador. Uma versão do formato Iceberg indica quais recursos estão disponíveis, mas não exige o seu uso. Recursos são opcionais, exceto para o acompanhamento de linhas que é obrigatório na versão 3 do formato. Quando um recurso mostra "N/A" na coluna Iceberg, é um recurso específico do Delta sem um equivalente direto no Iceberg.

nota

Se você se preocupa apenas com a compatibilidade do Databricks Runtime, consulte Como o Databricks gerencia a compatibilidade de recursos do Delta Lake?.

Recurso

Delta minWriterVersion

Delta minReaderVersion

Iceberg format-version

Tipo de recurso

Funcionalidade básica

2

1

1

Gravador

CHECK restrições

3

1

N/A

Gravador

Alterar feed de dados

4

1

N/A

Gravador

Colunas geradas

4

1

N/A

Gravador

Mapeamento de coluna

5

2

N/A

Leitor e escritor

Colunas de identidade

6

1

N/A

Gravador

Acompanhamento de linha

7

1

3

Gravador

Vetores de deleção

7

3

3

Leitor e escritor

TimestampNTZ

7

3

1

Leitor e escritor

Clusters líquidos

7

3

1

Leitor e gravador (1)

Leitores Iceberg (UniForm)

7

2

N/A

Gravador (2)

Ampliação de tipo

7

3

N/A

Leitor e escritor

Variante

7

3

3

Leitor e escritor

Desagregação de variantes

7

3

3

Leitor e escritor

Colações

7

3

N/A

Leitor e escritor

Pontos de verificação protegidos

7

1

N/A

Gravador

Commits do Catálogo

7

3

N/A

Leitor e escritor

(1) : O agrupamento líquido implementa o particionamento oculto.

(2) : Requer que o mapeamento de colunas seja habilitado.