A partir da versão V3.0.38, o Hologres introduziu um novo caminho de acesso ao MaxCompute, denominado Common Table. Este tópico explica como usar a Common Table para acessar o MaxCompute.
Introdução
Com a Common Table, o Hologres lê dados do MaxCompute por meio de um leitor nativo em C++. Essa abordagem oferece as seguintes vantagens sobre o mecanismo SQE/HQE existente:
indica suporte e
indica falta de suporte.
Item de comparação | SQE/HQE | Common Table |
Desempenho | Alto | Muito alto. Melhora o desempenho em 33% em relação ao mecanismo SQE/HQE e em mais de 200% na comparação com a leitura de dados via Storage API de armazenamento aberto. |
Mascaramento dinâmico de dados | Exige configuração separada nas tabelas. | Herda regras de mascaramento de dados do MaxCompute, garantindo resultados de consulta consistentes com os do MaxCompute. |
Evolução de schema | Não há suporte para leituras diretas, o que resulta em desempenho ligeiramente inferior. | Há suporte para leituras diretas, proporcionando alto desempenho. |
Criptografia em repouso |
|
|
Tabelas ACID 1.0 |
|
|
PK Delta Table |
|
|
Append Delta Table |
|
|
Permissões
-
Para acessar tabelas externas (foreign tables) do MaxCompute via Common Table, são necessárias as permissões listadas na tabela. Para obter mais informações sobre como conceder essas permissões, consulte Gerenciar permissões de usuário usando comandos.
O Hologres V4.0+ introduziu alterações na verificação de permissões.
Tipo de tabela
Operação
Permissões necessárias no MaxCompute (Hologres V3.0, V3.1 e V3.2)
Permissões necessárias no MaxCompute (Hologres V4.0+)
Foreign table
IMPORT FOREIGN SCHEMA
Describe, List
Describe, List
Consulta de dados
Describe, Select
Select
External table
Visualização de metadados
Describe
Describe
Consulta de dados
Describe, Select
Select
Atualmente, o Hologres oferece suporte apenas à leitura do snapshot mais recente de uma MaxCompute Delta Table.
Não há suporte para gravação de dados do Hologres de volta em uma MaxCompute Delta Table.
Não há suporte para consultas em tabelas do MaxCompute com permissões no nível de linha configuradas.
Recursos
Recurso | Versões do Hologres compatíveis |
Column pruning para consultas no MaxCompute | >=4.1.6 |
Consulta de tabelas MaxCompute Append Delta | >= 3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Uso de | >= 3.0.41 >= 3.1.10 >= 3.2.0 >= 4.0.0 |
Leitura de tabelas do MaxCompute com valores padrão | >=3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Auto Split Size, que determina automaticamente o tamanho da divisão com base nas especificações da instância | >=3.1.33 >=3.2.0 >=4.0.0 |
Consulta de dados TIMESTAMP_NTZ | >= 3.0.41 >= 3.1.10 >=3.2.0 >=4.0.0 |
Predicate pushdown para filtros de igualdade em atributos como clustering keys e primary keys em Delta Tables, melhorando a eficiência do filtro e o desempenho da consulta. | >= 4.0.6 |
Ativar a Common Table
Escolha o método adequado ao seu cenário.
-
Nível de sessão
-- Enable Common Table at the session level. Execute this along with a query or DML statement. SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Nível de banco de dados
-- Enable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Nível de instância
-- Enable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Desativar a Common Table
-
Nível de sessão
-- Disable Common Table at the session level. Execute this with your query or DML statement. SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe'; -
Nível de banco de dados
-- Disable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe'; -
Nível de instância
-- Disable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
Verificar o caminho de acesso atual
-
Execute a seguinte instrução SQL para verificar o mecanismo atual de acesso ao MaxCompute.
odps:common_table,dlf:hqeindica que a Common Table está em uso.SHOW hg_experimental_external_catalog_routing; Para consultas históricas, verifique o campo
query_extinfono log de consultas lentas. A presença dedriver:CommonTableindica o uso da Common Table nessas consultas.
Auto Split Size
O parâmetro Auto Split Size é definido como off por padrão. Ative-o conforme necessário.
Ativar o Auto Split Size
V4.0+
-
Nível de sessão
-- Enable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Nível de banco de dados
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Nível de instância
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
Versões anteriores à V4.0
-
Nível de sessão
-- Enable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Nível de banco de dados
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Nível de instância
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';
Desativar o Auto Split Size
V4.0+
-
Nível de sessão
-- Disable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Nível de banco de dados
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Nível de instância
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
Versões anteriores à V4.0
-
Nível de sessão
-- Disable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Nível de banco de dados
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Nível de instância
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';
Column pruning
O Hologres V4.1.6 e versões posteriores oferecem suporte a column pruning, enviando filtros aos leitores de dados para acelerar a leitura. Esse recurso vem desativado por padrão no Hologres V4.1.
-- Enable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=true');
-- Disable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=false');