À partir de la version V3.0.38, Hologres introduit un nouveau mécanisme d'accès à MaxCompute, appelé Common Table. Cette rubrique explique comment utiliser Common Table pour accéder aux données MaxCompute.
Présentation
Avec Common Table, Hologres lit les données de MaxCompute à l'aide d'un lecteur natif en C++. Ce mécanisme présente les avantages suivants par rapport au mécanisme SQE/HQE existant :
indique que la fonctionnalité est prise en charge et
indique qu'elle n'est pas prise en charge.
Élément de comparaison | SQE/HQE | Common Table |
Performances | Élevées | Très élevées. Améliore les performances de 33 % par rapport au mécanisme SQE/HQE et de plus de 200 % par rapport à la lecture des données via l'API Storage open storage. |
Masquage dynamique des données | Nécessite une configuration distincte sur les tables. | Hérite des règles de masquage des données de MaxCompute, garantissant ainsi la cohérence des résultats de requête avec ceux obtenus depuis MaxCompute. |
Évolution du schéma | Ne prend pas en charge les lectures directes, ce qui entraîne des performances légèrement inférieures. | Prend en charge les lectures directes pour des performances optimales. |
Chiffrement au repos |
|
|
Tables ACID 1.0 |
|
|
Table Delta PK |
|
|
Table Delta Append |
|
|
Autorisations
-
Pour accéder aux tables externes/étrangères MaxCompute via Common Table, vous devez disposer des autorisations pertinentes répertoriées dans le tableau. Pour plus d'informations sur l'attribution de ces autorisations, consultez la section Gérer les autorisations utilisateur à l'aide de commandes.
Notez que Hologres V4.0+ introduit des modifications concernant la vérification des autorisations.
Type de table
Opération
Autorisations MaxCompute requises (Hologres V3.0, V3.1 et V3.2)
Autorisations MaxCompute requises (Hologres V4.0+)
Table étrangère
IMPORT FOREIGN SCHEMA
Describe, List
Describe, List
Interrogation des données
Describe, Select
Select
Table externe
Consultation des métadonnées
Describe
Describe
Interrogation des données
Describe, Select
Select
Hologres ne prend actuellement en charge que la lecture du dernier snapshot d'une table Delta MaxCompute.
L'écriture de données depuis Hologres vers une table Delta MaxCompute n'est pas prise en charge.
L'interrogation de tables MaxCompute dont les autorisations au niveau des lignes sont définies n'est pas prise en charge.
Fonctionnalités
Fonctionnalité | Versions Hologres prises en charge |
Élagage des colonnes pour les requêtes MaxCompute | >=4.1.6 |
Interrogation des tables MaxCompute Append Delta | >= 3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Utilisation de | >= 3.0.41 >= 3.1.10 >= 3.2.0 >= 4.0.0 |
Lecture de tables MaxCompute contenant des valeurs par défaut | >=3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Auto Split Size, qui détermine automatiquement la taille de fractionnement en fonction des spécifications de l'instance | >=3.1.33 >=3.2.0 >=4.0.0 |
Interrogation des données TIMESTAMP_NTZ | >= 3.0.41 >= 3.1.10 >=3.2.0 >=4.0.0 |
Le pushdown de prédicat pour les filtres d'égalité sur les attributs tels que les clés de clustering et les clés primaires dans les tables Delta améliore l'efficacité du filtrage et les performances des requêtes. | >= 4.0.6 |
Activer Common Table
Choisissez la méthode adaptée à votre scénario.
-
Niveau session
-- 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'; -
Niveau base de données
-- Enable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Niveau instance
-- Enable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Désactiver Common Table
-
Niveau session
-- 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'; -
Niveau base de données
-- Disable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe'; -
Niveau instance
-- Disable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
Vérifier le chemin d'accès actuel
-
Exécutez l'instruction SQL suivante pour vérifier le mécanisme actuel d'accès à MaxCompute. La valeur
odps:common_table,dlf:hqeindique que Common Table est utilisé.SHOW hg_experimental_external_catalog_routing; Pour les requêtes historiques, vérifiez le champ
query_extinfodans le journal des requêtes lentes. Si la valeurdriver:CommonTableapparaît, Common Table a été utilisé pour ces requêtes.
Auto Split Size
Le paramètre Auto Split Size est défini sur off par défaut. Vous pouvez l'activer si nécessaire.
Activer Auto Split Size
V4.0+
-
Niveau session
-- Enable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Niveau base de données
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Niveau instance
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
Versions antérieures à la V4.0
-
Niveau session
-- Enable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Niveau base de données
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Niveau instance
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';
Désactiver Auto Split Size
V4.0+
-
Niveau session
-- Disable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Niveau base de données
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Niveau instance
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
Versions antérieures à la V4.0
-
Niveau session
-- Disable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Niveau base de données
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Niveau instance
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';
Élagage des colonnes
Hologres V4.1.6 et versions ultérieures prennent en charge l'élagage des colonnes, qui permet de pousser les filtres vers les lecteurs de données pour accélérer leur lecture. Cette fonctionnalité est désactivée par défaut dans 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');