Todos os produtos
Search
Central de documentação

MaxCompute:Delta Table

Última atualização: Jul 08, 2026

As Delta Tables do MaxCompute são um formato de tabela de alto desempenho para conjuntos de dados analíticos em grande escala, disponíveis como Append Delta Tables (sem chave primária) e PK Delta Tables (com chave primária).

Visão geral

A Delta Table é um formato de tabela de alto desempenho no Alibaba Cloud MaxCompute com suporte a transações ACID, consultas incrementais, time travel, bucketing dinâmico de cluster, atualizações de dados em tempo real e evolução de schema. Os recursos nativos de data lakehouse e computação quase em tempo real do MaxCompute permitem usar SQL padrão para criar, atualizar e consultar Delta Tables sem gerenciar o armazenamento subjacente ou metadados. O MaxCompute mantém e otimiza essas tabelas automaticamente, garantindo equilíbrio entre facilidade de uso e custo-benefício.

Recursos

Categoria

Recurso

Append Delta Table

PK Delta Table

DML básico

Insert, Update, Delete e Merge Into.

Compatível

Compatível

Transações ACID

Read Committed/Snapshot Isolation.

Gerenciamento de transações ACID.

Compatível

Compatível

Chave primária

Defina uma chave primária.

Não compatível

Compatível com atualizações parciais de colunas

Evolução de schema

Adicionar, excluir, renomear, reordenar e alterar o tipo de dados das colunas.

ALTER TABLE.

Compatível

Compatível

Importação de dados

  • Escritas em streaming para importação incremental de dados com alta concorrência usando Gravar dados no MaxCompute com Flink, integração de dados do DataWorks e DataHub.

  • Escritas em lote incrementais e completas.

Upload em Stream/Batch

Os dados ficam visíveis imediatamente após um upload em stream.

Upsert

Time travel

Consulte snapshots históricos por ponto no tempo ou número de versão para reprodução de resultados ou análise de auditoria.

Time Travel.

Compatível

Compatível

Computação incremental

Delta Live Materialized View (MV) e Leitura Incremental.

Computação incremental e Consultas incrementais.

Compatível

(Suporte a visualização materializada incremental em andamento.)

Compatível

Otimização da organização de dados

Mantém automaticamente arquivos de dados incrementais por meio da mesclagem de arquivos pequenos, COMPACTION multinível e classificação de dados.

Otimizar a organização de dados para Append Delta Tables e Otimização da organização de dados para PK Delta tables.

Compatível

Configuração de bucket desnecessária. O Dynamic Bucketing adapta-se à distribuição de dados automaticamente.

Compatível

Otimização do desempenho de consulta

Estatísticas no nível de partição e arquivo (como Min/Max), pruning de partição, pruning de coluna e pushdown de predicado.

Compatível

Compatível

Segurança e conformidade

Criptografia de armazenamento / Mascaramento dinâmico de dados / Controle de acesso no nível de linha.

Compatível

Compatível

Recuperação de desastres e backup

Snapshots de tabela / Backup local / Recuperação de desastres com redundância de zona.

Compatível

Compatível

Custo

Compressão de column-store AliORC e armazenamento em camadas.

Compatível

Compatível

Experiência do usuário

Atualizações de dados em tempo real para serviços em tempo real

As Delta Tables aceitam escritas e upserts em tempo real por meio de Stream Upload. Os dados tornam-se visíveis imediatamente. O MaxCompute equilibra a latência de escrita com o desempenho de consulta usando uma estratégia de armazenamento em camadas:

  • Garantia de escritas em tempo real: Novos dados são gravados em buckets não clusterizados sem classificação, assegurando baixa latência e alto throughput.

  • Melhoria no desempenho de consultas SQL: O serviço de Reclusterização Incremental em segundo plano reorganiza assincronamente os dados incrementais em buckets clusterizados e ordenados. O mecanismo de consulta aplica pruning nos dados base ordenados e verifica apenas uma pequena quantidade de dados incrementais, equilibrando atualidade e eficiência.

Processamento e análise eficiente de dados incrementais

O MaxCompute oferece recursos avançados de processamento incremental. Combine a Computação incremental e as Delta Live Materialized Views (visualização) para construir pipelines de processamento de dados em tempo real.

Adaptação ao crescimento dos negócios e superação dos limites de formatos de tabela anteriores

  1. Alocação dinâmica de buckets: As Append Delta Tables alocam buckets dinamicamente sem exigir especificação DDL. Conforme o volume de dados aumenta, o serviço de Dynamic Bucketing divide ou cria buckets automaticamente, adaptando-se às mudanças e evitando skew e fragmentação.

  2. Evolução de schema: As Delta Tables aceitam adição, exclusão, modificação e renomeação de colunas com total compatibilidade retroativa para evitar perda acidental de dados.

  3. Capacidades unificadas de tabela: Uma única Delta Table aceita INSERT INTO, UPDATE, DELETE e MERGE INTO com armazenamento clusterizado ordenado — combinando capacidades que anteriormente exigiam tabelas particionadas, clusterizadas e transacionais separadas.

  4. Suporte a múltiplos mecanismos: Acesse Delta Tables a partir do MaxCompute SQL, MaxFrame, Spark on MaxCompute e mecanismos open-source (Flink, Spark, StarRocks) por meio do Spark Connector e APIs de armazenamento aberto.

Equilíbrio entre desempenho e confiabilidade

  1. As Delta Tables lidam com volumes de dados de terabytes a petabytes com operações rápidas de metadados. As consultas utilizam pruning de partição, pruning de coluna e pushdown de predicado para minimizar a varredura de dados.

  2. Transações ACID: As Delta Tables usam controle de concorrência otimista para permitir múltiplos escritores simultâneos. O sistema detecta conflitos de escrita e tenta novamente automaticamente.

  3. Segurança e conformidade: As Delta Tables oferecem suporte a criptografia de armazenamento, ACLs no nível de tabela e coluna, permissões no nível de linha e mascaramento dinâmico de dados.

  4. Backup e rollback: Um mecanismo de lixeira versionada permite reverter tabelas para um estado íntegro anterior após corrupção de dados ou exclusão acidental.

Operações SQL

DDL

Crie uma Append Delta Table

-- Create an Append Delta Table
CREATE TABLE <table_name> (
  <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
) 
[comment <table_comment>]
[RANGE CLUSTERED BY (<col_name> [, <col_name>, ...]) ]
TBLPROPERTIES (
  "table.format.version"="2" 
  ["acid.data.retain.hours"="hours"...]
)
[LIFECYCLE <days>];

Parâmetros TBLPROPERTIES:

Parâmetro

Obrigatório

Descrição

Observações

"table.format.version"="2"

Sim

Declara o formato da tabela como Delta Table.

acid.data.retain.hours

Não

O valor padrão é 24. O intervalo de valores é [24, 168].

Intervalo de tempo, em horas, para consulta de estados históricos de dados via Time Travel.

  • Um valor de 0 indica que estados históricos de dados não são retidos e consultas Time Travel não são suportadas.

  • Se um estado histórico de dados existir por mais tempo que o valor deste parâmetro, ele poderá ser excluído ou compactado.

  • Se uma consulta Time Travel especificar um horário anterior ao valor deste parâmetro, o sistema reportará um erro. Por exemplo, se este parâmetro estiver definido como 72 horas, ocorrerá um erro ao tentar consultar um estado histórico de dados de mais de 72 horas atrás.

acid.incremental.query.out.of.time.range.enabled

Não

O valor padrão é false.

Se definido como true, o endTimestamp especificado em uma consulta incremental pode ser posterior ao horário de commit mais recente da tabela. Se o endTimestamp for posterior ao horário atual, múltiplas consultas poderão retornar resultados diferentes devido à possível inserção de novos dados.

É possível modifique o valor deste parâmetro para uma tabela.

Crie uma PK Delta Table

-- Create a PK Delta Table
CREATE TABLE <table_name> (
  <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
  PRIMARY KEY (<pk_col_name>[, <pk_col_name2>, ...] )
) 
[comment <table_comment>]
TBLPROPERTIES (
  "table.format.version"="2" 
  [, "write.bucket.num" = "N", "acid.data.retain.hours"="hours"...]
)
[LIFECYCLE <days>];

Parâmetros:

  • PRIMARY KEY (PK): Obrigatório para PK Delta Tables. Aceita uma ou mais colunas com combinações de valores únicos. Segue a sintaxe padrão de chave primária SQL. As colunas de chave primária devem ser NOT NULL e não podem ser modificadas.

    Após defina a chave primária, os dados são deduplicados pelas colunas de chave primária. A restrição de unicidade aplica-se dentro de uma única partição ou em toda uma tabela não particionada.

  • Parâmetros TBLPROPERTIES:

Parâmetro

Obrigatório

Descrição

Observações

"table.format.version"="2"

Sim

Declara o formato da tabela como Delta Table.

  • Anteriormente, PK Delta Tables eram declaradas definindo "transactional"="true" e especificando uma PRIMARY KEY.

  • Agora, declare-as definindo "table.format.version"="2" e especificando uma PRIMARY KEY.

write.bucket.num

Não

O valor padrão é 16. O intervalo de valores é (0, 4096].

Número de buckets por partição ou tabela não particionada, que também define a concorrência de escrita. Modificável para tabelas particionadas (aplica-se a novas partições); não modificável para tabelas não particionadas. Diretrizes:

  • Para importações via Tunnel, define a contagem simultânea de nós do Tunnel, limitada pelo limite de concorrência do Tunnel.

  • Para escritas SQL, define o paralelismo do Reducer, limitado pelo máximo de nós Reducer simultâneos.

  • Mire em ~500 MB por bucket. Por exemplo, uma partição de 500 GB precisa de ~1.000 buckets. Para tabelas muito grandes, 2-3 GB por bucket é aceitável.

acid.data.retain.hours

Não

O valor padrão é 24. O intervalo de valores é [24, 168].

Intervalo de tempo, em horas, para consulta de estados históricos de dados via Time Travel.

  • Um valor de 0 indica que estados históricos de dados não são retidos e consultas Time Travel não são suportadas.

  • Se um estado histórico de dados existir por mais tempo que o valor deste parâmetro, ele poderá ser excluído ou compactado.

  • Se uma consulta Time Travel especificar um horário anterior ao valor deste parâmetro, o sistema reportará um erro. Por exemplo, se este parâmetro estiver definido como 72 horas, ocorrerá um erro ao tentar consultar um estado histórico de dados de mais de 72 horas atrás.

acid.incremental.query.out.of.time.range.enabled

Não

O valor padrão é false.

Se definido como true, o endTimestamp especificado em uma consulta incremental pode ser posterior ao horário de commit mais recente da tabela. Se o endTimestamp for posterior ao horário atual, múltiplas consultas poderão retornar resultados diferentes devido à possível inserção de novos dados.

É possível modifique o valor deste parâmetro para uma tabela.

acid.write.precombine.field

Não

Especifique o nome de uma coluna.

Se um nome de coluna for especificado, o sistema deduplica os dados com base nas colunas de chave primária (PK) e na coluna especificada durante o processamento de arquivos para o mesmo commit. Isso garante a unicidade e consistência dos dados.

Nota

Se o volume de dados de um único commit exceder 128 MB, múltiplos arquivos serão gerados. Este parâmetro não se aplica a múltiplos arquivos.

acid.partial.fields.update.enable

Não

Quando definido como true, permite usar SQL ou Tunnel para realizar atualizações parciais de colunas em uma Delta Table.

Defina este parâmetro ao criar a tabela. Você não pode modificá-lo após a criação da tabela.

Observações

Item

Append Delta Table

PK Delta Table

Tabela clusterizada

Número de buckets

Não é necessário especificar write.bucket.num. Os buckets escalam dinamicamente com o volume de dados.

Especifique a contagem de buckets no DDL. Padrão: 16.

/

Política de organização de dados

Apenas RANGE CLUSTERED BY (CLUSTERED BY não compatível). SORT BY não é necessário — os dados são ordenados pelos campos RANGE CLUSTERED BY por padrão.

CLUSTERED BY não permitido. Hash cluster é criado automaticamente na chave primária.

CLUSTERED BY

Ciclo de vida

Deve satisfazer lifecycle >= acid.data.retain.hours / 24. Validado na criação da tabela.

/

/

  1. Não é possível converter diretamente uma tabela padrão existente em uma Delta Table.

  2. PK Delta Tables não aceitam evolução de schema para colunas de chave primária (PK).

  3. Atualmente, PK Delta Tables não aceitam o tipo de dados JSON.

  4. CREATE TABLE AS não é compatível.

DML

As Delta Tables aceitam operações DML: Inserir ou sobrescrever dados (INSERT INTO | INSERT OVERWRITE), UPDATE | DELETE e MERGE INTO.

DQL

As Delta Tables aceitam análise de consulta de uso geral. Operações DQL (SELECT).

Importação de dados

  • Append Delta Tables aceitam upload em lote e upload em stream. Sem chave primária, Upsert e Delete não são compatíveis.

  • PK Delta Tables aceitam a API Tunnel Upsert/Delete. O Upsert insere uma linha se a chave primária não existir, ou atualiza campos que não são de chave primária caso ela exista.

Otimização da organização de dados