Partilhar via


Compatibilidade de recursos e protocolos do Delta Lake

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

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

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

Cada tabela Delta tem uma especificação de protocolo que indica o conjunto de recursos necessários para ler e gravar na tabela. A especificação de protocolo é usada por aplicativos que leem ou gravam na tabela para determinar se eles podem lidar com todos os recursos suportados pela tabela. Se um aplicativo não souber como lidar com um recurso listado como suportado no protocolo de uma tabela, esse aplicativo não poderá ler ou gravar essa tabela.

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

A tabela a seguir fornece uma visão geral dos principais termos usados para descrever os protocolos Delta Lake:

Período Descrição
Cliente Delta Lake Qualquer sistema que leia ou grave em uma tabela Delta.
Ler protocolo Especifica o suporte necessário para um cliente Delta Lake ler uma tabela.
Escrever protocolo Especifica o suporte necessário para um cliente Delta Lake gravar em uma tabela.
minReaderVersion Componente do protocolo do leitor. Os valores válidos são 1, 2, ou 3.
minWriterVersion Componente do protocolo do gravador. Os valores válidos são inteiros de 2 a 7.
Funcionalidade de tabela Uma alternativa refinada às versões de protocolo. As funcionalidades da tabela mapeiam-se para funcionalidades do Delta Lake que podem ser opcionalmente ativadas.
Funcionalidade do Writer Um recurso de tabela vinculado a um protocolo de gravação.
Funcionalidade de leitura 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 os clientes do gravador, o que significa que o acesso somente leitura à tabela a partir de cargas de trabalho herdadas ainda é suportado. Os protocolos de leitura e os recursos do leitor afetam a compatibilidade de leitura e gravação.

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

Alguns recursos da tabela não podem ser descartados uma vez ativados. Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.

Recursos de tabela para compatibilidade de protocolo

No Databricks Runtime 12.2 LTS e versões posteriores, o Databricks utiliza funcionalidades de tabela para indicar suporte a características e compatibilidade com leitores e gravadores. Os recursos de tabela usam sinalizadores granulares para especificar quais recursos são suportados por uma determinada tabela. Os recursos de tabela substituem o esquema de controle de versão do protocolo herdado introduzindo novos recursos no protocolo Delta Lake.

Os recursos do gravador de tabela indicam recursos que afetam a maneira como os dados são gravados. Os recursos do gravador de tabela requerem minWriterVersion == 7. As funcionalidades implementadas como funcionalidades de escrita não bloqueiam os clientes leitores.

Os recursos do leitor de tabela indicam recursos que afetam a maneira como os dados são lidos. Todos os recursos do leitor de tabelas também são recursos do gravador de tabelas. As características do leitor de tabelas requerem minReaderVersion == 3 e minWriterVersion == 7. Um cliente não pode gravar em uma tabela que ele não pode ler.

Quando os recursos de tabela são habilitados, todos os recursos suportados pelo protocolo para a tabela aparecem nas respetivas listas como readerFeatures ou writerFeatures. Ao descartar recursos de uma tabela, sua tabela pode remover esse comportamento para resolver para o protocolo mais baixo possível. Consulte Protocolo mais baixo possível.

Versões de protocolo baseadas em números inteiros e compatibilidade herdada

Todas as tabelas incluem uma versão de protocolo baseada em números inteiros representada por minReaderVersion e minWriterVersion. A funcionalidade implementada usando recursos de tabela se baseia nessas versões de protocolo, mas muitos clientes legados de leitor e gravador continuam a usar versões de protocolo para gerenciar a compatibilidade. Delta Lake tenta resolver o protocolo de tabela para a versão mais baixa possível para manter a máxima compatibilidade com clientes Delta modernos e legados. Consulte Protocolo mais baixo possível.

No esquema de versionamento de protocolo baseado em inteiros, cada numeração de versão agrupa várias funcionalidades, onde as funcionalidades entre os números de versão são cumulativas. Isso significa que, para serem compatíveis 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

O Databricks inclui suporte parcial ininterrupto para recursos de tabela em todas as versões suportadas do Databricks Runtime. Os clientes Delta do OSS escolhem como implementar o suporte para determinados recursos.

Quando muda o protocolo da tabela?

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

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

A desativação de uma funcionalidade de tabela não resulta numa redução do protocolo. Você deve eliminar o recurso para removê-lo totalmente do protocolo da tabela. Nem todas as funcionalidades da tabela podem ser descartadas. Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.

Todas as operações de alteração de protocolo entram em conflito com todas as escritas simultâneas.

As leituras de streaming falham quando encontram uma confirmação que altera os metadados da tabela. Se quiser que o fluxo continue, tem de reiniciá-lo. Para obter os métodos recomendados, consulte Considerações de produção para streaming estruturado.

Aviso

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

Estão disponíveis rebaixamentos de protocolo para algumas funcionalidades. Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.

Quando o protocolo de tabela é atualizado?

Quando você habilita um recurso em uma tabela, o protocolo de tabela é atualizado automaticamente. Alguns recursos são habilitados automaticamente com base na sintaxe usada nas CREATEALTER instruções da tabela, enquanto outros recursos exigem habilitação explícita por meio da configuração das propriedades da tabela. Às vezes, você deve habilitar explicitamente vários recursos de tabelas para oferecer suporte à funcionalidade desejada. Em outros casos, a ativação da funcionalidade pode habilitar automaticamente outros recursos da tabela. Consulte a documentação do Azure Databricks para obter a funcionalidade e a sintaxe que você está usando para determinar quais recursos de tabela são necessários.

Os recursos do leitor exigem a atualização do protocolo de leitura e do protocolo de gravação. Os recursos do gravador exigem apenas a atualização do protocolo de gravação.

Como exemplo, o suporte para CHECK restrições é um recurso do escritor: apenas as aplicações de escrita precisam estar cientes das CHECK restrições e aplicá-las.

Por outro lado, o mapeamento de colunas requer a atualização dos protocolos de leitura e gravação. Como os dados são armazenados de forma diferente na tabela, os aplicativos de leitura devem entender o mapeamento de colunas para que possam ler os dados corretamente.

Nota

Databricks recomenda não alterar as propriedades da minReaderVersion tabelaminWriterVersion. A alteração dessas propriedades da tabela não impede a atualização do protocolo. Definir esses valores para um valor mais baixo não diminui a qualidade da tabela. Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.

Protocolo mais baixo possível

Por padrão, 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 na redução do protocolo de tabela, o que significa que o minReaderVersion ou minWriterVersion pode mudar 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 de tabela. As características da tabela nunca são descartadas automaticamente.

Se todos os recursos Delta Lake presentes em uma tabela forem totalmente suportados em uma versão de protocolo inferior, a tabela poderá reverter para uma versão de protocolo que não use recursos de tabela para indicar a compatibilidade do leitor e do gravador. Quando este downgrade de protocolo ocorre, a tabela pode descartar o readerFeatures ou ambos readerFeatures e writerFeatures do protocolo da tabela. Isso não resulta na desativação de nenhum recurso do Delta Lake e ocorre apenas 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 leitores e escritores. Isso ocorre porque os clientes leitor e gravador devem respeitar versões de protocolo mais baixas, mesmo que suportem versões de protocolo mais altas.

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

Se você interagir apenas com tabelas Delta por meio do Azure Databricks, poderá continuar a acompanhar o suporte para recursos Delta Lake usando os requisitos mínimos de tempo de execução do Databricks. O Azure Databricks dá suporte à leitura de tabelas Delta que foram atualizadas para recursos de tabela em todas as versões do Databricks Runtime LTS, desde que todos os recursos usados pela tabela sejam suportados por essa versão.

Se você ler e escrever a partir de tabelas Delta usando outros sistemas, talvez seja necessário considerar como os recursos da tabela afetam a compatibilidade, porque há um risco de que o sistema não possa 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 escritor e a versão 3 do leitor. O Azure Databricks retroportou o código para todas as versões suportadas do Databricks Runtime LTS 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, as tabelas com colunas de identidade habilitadas (o que requer o Databricks Runtime 10.4 LTS) ainda não são suportadas nesse Databricks Runtime.

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

O Databricks introduz 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 Azure Databricks que aproveitam os recursos do Delta Lake respeitam os protocolos usados no Delta Lake do OSS para compatibilidade. Muitas otimizações do Azure Databricks exigem a habilitação de recursos Delta Lake em uma tabela, e alguns produtos do Azure Databricks, como Lakeflow Spark Declarative Pipelines, dependem de muitos recursos de tabela.

  • Todas as tabelas escritas por versões inferiores do Databricks Runtime têm suporte total de leitura e gravação em versões superiores do Databricks Runtime.
  • As tabelas escritas por versões mais altas do Databricks Runtime podem usar recursos de tabela que não são suportados em versões inferiores do Databricks Runtime.
    • Alguns recursos podem permitir gravações de versões inferiores do Databricks Runtime sem aplicar totalmente todas as otimizações relacionadas aos recursos de tabela habilitados.

Ao trabalhar com funcionalidades de tabela que têm suporte retrotransportado para versões mais baixas do Databricks Runtime, algumas operações executadas numa determinada versão do Databricks Runtime podem não ser executadas na correspondente versão Delta do OSS. Se o ciclo de desenvolvimento ou a arquitetura de dados incluir o OSS Delta Lake, você deve sempre testar a compatibilidade em clientes Delta do OSS antes de habilitar os recursos de tabela nas tabelas de produção.

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

As funcionalidades são habilitadas individualmente para cada tabela. A tabela a seguir lista a versão mais baixa do Databricks Runtime com suporte total para o recurso indicado. Suporte total significa que todas as funcionalidades geralmente disponíveis para leituras e gravações são suportadas.

Caraterística Requer a versão do Databricks Runtime ou posterior Documentação
CHECK Restrições Todas as versões suportadas do Databricks Runtime Definir uma restrição de CHECK no Azure Databricks
Alterar feed de dados Todas as versões suportadas do Databricks Runtime Utilizar o feed de dados de alterações do Delta Lake no Azure Databricks
Colunas geradas Todas as versões suportadas do Databricks Runtime Colunas geradas pelo Lago Delta
Mapeamento de colunas Todas as versões suportadas do Databricks Runtime Renomear e eliminar colunas com mapeamento de colunas Delta Lake
Colunas de identidade Todas as versões suportadas do Databricks Runtime Usar colunas de identidade no Delta Lake
Características de tabelas Tempo de execução do Databricks 12.2 LTS Recursos de tabela para compatibilidade de protocolo
Vetores de eliminação Tempo de execução do Databricks 12.2 LTS O que são vectores de eliminação?
Timestamp NTZ Databricks Tempo de execução 13.3 LTS TIMESTAMP_NTZ tipo
UniForm Databricks Tempo de execução 13.3 LTS Ler tabelas Delta com clientes Iceberg
Agrupamento de líquidos Databricks Tempo de execução 13.3 LTS Usar agrupamento líquido para tabelas
Rastreamento de fila Tempo de execução do Databricks 14.3 LTS Usar o rastreamento de linhas para tabelas Delta
Ampliação de tipo Databricks Tempo de execução 15.4 LTS Generalização de tipo
Variante Databricks Tempo de execução 15.4 LTS Suporte para variantes no Delta Lake
Colações Tempo de execução do Databricks 16.1 Suporte de agrupamento para Delta Lake
Pontos de verificação protegidos Tempo de execução do Databricks 16.3 Eliminar uma funcionalidade de tabela Delta Lake e desclassificar o protocolo da tabela

Consulte as Notas sobre as versões e compatibilidade do Databricks Runtime.

Nota

Lakeflow Spark Declarative Pipelines e Databricks SQL atualizam automaticamente os ambientes de tempo de execução com versões regulares para oferecer suporte a novos recursos. Consulte as notas de versão do Lakeflow Spark Declarative Pipelines e o processo de atualização de versão e as notas de versão do Databricks SQL.

Características por versão do protocolo

O protocolo OSS Delta Lake padronizou os recursos das tabelas, mas alguns clientes de leitura e escrita não implementaram suporte para esses recursos e continuam a usar os protocolos legados minWriterVersion e minReaderVersion.

Alguns clientes podem não ter suporte para todos os recursos do Delta Lake, incluindo recursos que usam controle de versão de protocolo herdado. Consulte a documentação do seu cliente Delta Lake para confirmar o suporte a funcionalidades. Teste sempre a compatibilidade antes de ativar novos recursos nas tabelas de produção.

A tabela a seguir mostra as versões mínimas do protocolo de leitor e gravador necessárias para os recursos do Delta Lake, além de indicar se um recurso de tabela precisa ser respeitado apenas para gravações ou para leituras e gravações.

Nota

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

Caraterística minWriterVersion minReaderVersion Funcionalidade de tabela
Funcionalidade básica 2 1 Escritor
CHECK Restrições 3 1 Escritor
Alterar feed de dados 4 1 Escritor
Colunas geradas 4 1 Escritor
Mapeamento de colunas 5 2 Leitor e escritor
Colunas de identidade 6 1 Escritor
Rastreamento de linha 7 1 Escritor
Vetores de exclusão 7 3 Leitor e escritor
Carimbo de data/horaNTZ 7 3 Leitor e escritor
Agrupamento de líquidos 7 3 Leitor e escritor
Leitores Iceberg (UniForm) 7 2 Escritor (1)
Generalização de tipo 7 3 Leitor e escritor
Variante 7 3 Leitor e escritor
Colações 7 3 Leitor e escritor
Pontos de verificação protegidos 7 1 Escritor

(1): Requer que o mapeamento de colunas esteja ativado.