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

Delta Lake é um projeto independente de código aberto sob a governança da Linux Foundation. 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 da Databricks que aproveitam o recurso Delta Lake respeitam os protocolos usados no OSS Delta Lake para fins de compatibilidade.

Muitas otimizações do Databricks exigem a habilitação dos recursos do Delta Lake em uma tabela. Os recursos do Delta Lake são sempre compatíveis com versões anteriores, portanto, as tabelas gravadas por uma versão mais baixo do Databricks Runtime sempre podem ser lidas e gravadas por uma versão superior do Databricks Runtime. Habilitar alguns recursos quebra a compatibilidade com cargas de trabalho em execução em uma versão mais baixo do Databricks Runtime. Para recursos que quebram a compatibilidade, você deve atualizar todas as cargas de trabalho que fazem referência às tabelas atualizadas para usar uma versão compatível do Databricks Runtime.

Observação

Você pode descartar deletionVectors e v2Checkpoint no Databricks. Consulte Eliminar recurso da tabela Delta.

Importante

Todas as operações de alteração de protocolo entram em conflito com todas as gravações concorrente.

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

Quais recursos do Delta Lake exigem atualizações do Databricks Runtime?

Os seguintes recursos do Delta Lake quebram a compatibilidade futura. Os recursos são ativados tabela por tabela. Esta tabela lista a versão mais baixa do Databricks Runtime ainda suportada pelo Databricks.

recurso

Requer a versão Databricks Runtime ou posterior

Documentação

CHECK restrições

Databricks Runtime 9.1 LTS

Definir uma restrição CHECK no Databricks

Alterar feed de dados

Databricks Runtime 9.1 LTS

Use o feed de dados de alteração do Delta Lake no Databricks

Colunas geradas

Databricks Runtime 9.1 LTS

Delta Lake colunas geradas

Mapeamento de coluna

Databricks Runtime 10.4 LTS

Renomeie e solte colunas com mapeamento de coluna Delta Lake

Colunas de identidade

Databricks Runtime 10.4 LTS

Usar colunas de identidade no Delta Lake

Tabela de recurso

Databricks Runtime 12.1 (sem suporte)

O que são recursos de tabela?

Vetores de deleção

Databricks Runtime 12.1 (sem suporte)

O que são vetores de deleção?

TimestampNTZ

Databricks Runtime 13.0 (sem suporte)

Tipo TIMESTAMP_NTZ

Uniforme

Databricks Runtime 13.2 (sem suporte)

Universal Format (UniForm) para compatibilidade Iceberg com tabelas Delta

clusterslíquidos

Databricks Runtime 13.3 LTS

Use clusters líquidos para tabelas Delta

Consulte notas do Databricks Runtime sobre versões de versão e compatibilidade.

Observação

Delta Live Tables e Databricks SQL atualizam automaticamente ambientes Runtime com versões regulares para dar suporte a novos recursos. Consulte Delta Live Tables notas sobre a versão e o processo de atualização de lançamento e Databricks SQL notas sobre a versão.

O que é uma especificação de protocolo de tabela?

Cada tabela Delta possui uma especificação de protocolo que indica o conjunto de recursos que a tabela suporta. A especificação de protocolo é usada por aplicativos que leem ou gravam a 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 listado como suportado no protocolo de uma tabela, esse aplicativo não poderá ler ou gravar nessa tabela.

A especificação do protocolo é separada em dois componentes: o protocolo de leitura e o protocolo de gravação.

Aviso

A maioria dos upgrades de versão de protocolo é irreversível, e o upgrade da versão do protocolo pode interromper os leitores, gravadores ou ambos da tabela Delta Lake. A Databricks recomenda que o senhor atualize tabelas específicas somente quando necessário, como para optar por um novo recurso no Delta Lake. O senhor 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.

Os downgrades de protocolo estão disponíveis para alguns recursos. Consulte Recurso da tabela Drop Delta.

Leia o protocolo

O protocolo de leitura lista todos os recursos suportados por uma tabela e que um aplicativo deve entender para ler a tabela corretamente. Atualizar o protocolo de leitura de uma tabela requer que todos os aplicativos de leitura suportem os recursos adicionados.

Importante

Todos os aplicativos que gravam em uma tabela Delta devem ser capazes de construir um Snapshot da tabela. Dessa forma, as cargas de trabalho que gravam em tabelas Delta devem respeitar os requisitos de protocolo do leitor e do gravador.

Se você encontrar um protocolo sem suporte de uma carga de trabalho no Databricks, deverá atualizar para um Databricks Runtime superior que ofereça suporte a esse protocolo.

Protocolo de gravação

O protocolo de gravação lista todos os recursos suportados por uma tabela e que um aplicativo deve entender para gravar na tabela corretamente. Atualizar o protocolo de gravação de uma tabela requer que todos os aplicativos de gravação suportem os recursos adicionados. Não afeta aplicativos somente leitura, a menos que o protocolo de leitura também seja atualizado.

Quais protocolos devem ser atualizados?

Alguns recursos requerem a atualização do protocolo de leitura e do protocolo de gravação. Outros recursos exigem apenas a atualização do protocolo de gravação.

Por exemplo, o suporte para restrições CHECK é um recurso de protocolo de gravação: apenas os aplicativos de gravação precisam conhecer as restrições CHECK e aplicá-las.

Por outro lado, o mapeamento de coluna 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.

Versões mínimas de leitor e escritor

Observação

O senhor deve atualizar explicitamente a versão do protocolo da tabela ao ativar o mapeamento de colunas.

Quando o senhor ativa o recurso Delta em uma tabela, o protocolo da tabela é atualizado automaticamente. A Databricks recomenda não alterar as propriedades das tabelas minReaderVersion e minWriterVersion. A alteração dessas propriedades da tabela não impede a atualização do protocolo. A definição desses valores para um valor mais baixo não desvaloriza a tabela. Consulte Recurso da tabela Drop Delta.

O que são recursos de tabela?

No Databricks Runtime 12.1e acima, os recursos da tabela Delta Lake introduzem sinalizadores granulares especificando quais recursos são suportados por uma determinada tabela. No Databricks Runtime 12.0 e abaixo, os recursos do Delta Lake foram habilitados em pacotes chamados de versões de protocolo. Os recursos de tabela são os sucessores das versões de protocolo e são projetados com o objetivo de maior flexibilidade para clientes que leem e gravam Delta Lake. Consulte O que é uma versão de protocolo?.

Observação

Os recursos da tabela têm requisitos de versão de protocolo. Ver recurso por versão do protocolo.

Um recurso de tabela Delta é um marcador que indica que a tabela oferece suporte a um recurso específico. Cada recurso é um recurso de protocolo de gravação (o que significa que apenas atualiza o protocolo de gravação) ou um recurso de protocolo de leitura/gravação (o que significa que os protocolos de leitura e gravação são atualizados para habilitar o recurso).

Para saber mais sobre os recursos de tabela com suporte no Delta Lake, consulte o protocolo Delta Lake.

Os recursos da tabela alteram como os recursos do Delta Lake são ativados?

Se você interagir apenas com tabelas Delta por meio do Databricks, poderá continuar a acompanhar o suporte para os recursos do Delta Lake usando os requisitos mínimos do Databricks Runtime. O 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 compatíveis com essa versão.

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

Importante

Os recursos da tabela são introduzidos no formato Delta Lake para a versão 7 do gravador e a versão 3 do leitor. O Databricks fez o backport do código para todas as versões LTS do Databricks Runtime com suporte para adicionar suporte aos recursos da 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 (que requerem Databricks Runtime 10.4 LTS) ainda não têm suporte nesse Databricks Runtime.

O que é uma versão de protocolo?

Uma versão de protocolo é um número de protocolo que indica um agrupamento específico de recursos de tabela. No Databricks Runtime 12.0 e abaixo, você não pode habilitar recursos de tabela individualmente. As versões de protocolo agrupam um grupo de recursos.

As tabelas Delta especificam uma versão de protocolo separada para protocolo de leitura e protocolo de gravação. Os logs de transações para uma tabela Delta contêm informações de versão de protocolo que oferecem suporte à evolução do Delta Lake. Consulte Revisar os detalhes da tabela Delta Lake com detalhes de descrição.

As versões do protocolo agrupam todos os recursos dos protocolos anteriores. Ver recurso por versão do protocolo.

Observação

Começando com a versão 7 do gravador e a versão 3 do leitor, o Delta Lake introduziu o conceito de recursos de tabela. Usando recursos de tabela, agora você pode optar por habilitar apenas os recursos suportados por outros clientes em seu ecossistema de dados. Consulte O que são recursos de tabela?.

recurso por versão do protocolo

A tabela a seguir mostra as versões de protocolo mínimas necessárias para os recursos do Delta Lake.

Observação

Se você estiver preocupado apenas com a compatibilidade do Databricks Runtime, consulte Qual recurso do Delta Lake exige atualizações do Databricks Runtime?. Delta compartilhamento só suporta leitura de tabelas com recurso que requerem minReaderVersion = 1.

recurso

minWriterVersion

minReaderVersion

Documentação

Funcionalidade básica

2

1

O que é Delta Lake?

CHECK restrições

3

1

Definir uma restrição CHECK no Databricks

Alterar feed de dados

4

1

Use o feed de dados de alteração do Delta Lake no Databricks

Colunas geradas

4

1

Delta Lake colunas geradas

Mapeamento de coluna

5

2

Renomeie e solte colunas com mapeamento de coluna Delta Lake

Colunas de identidade

6

2

Usar colunas de identidade no Delta Lake

Recurso de tabela lido

7

1

O que são recursos de tabela?

Gravação de recursos de tabela

7

3

O que são recursos de tabela?

Vetores de deleção

7

3

O que são vetores de deleção?

TimestampNTZ

7

3

Tipo TIMESTAMP_NTZ

clusterslíquidos

7

3

Use clusters líquidos para tabelas Delta

Uniforme

7

2

Universal Format (UniForm) para compatibilidade Iceberg com tabelas Delta