Tous les produits
Search
Centre de documentation

Hologres:Mise en miroir des données

Dernière mise à jour :Sep 18, 2026

Introduite dans Hologres V3.2, la mise en miroir des tables de data lake accélère les requêtes en synchronisant les métadonnées et les données depuis des sources externes vers Hologres en temps quasi réel ou à intervalles réguliers. Mettez en miroir des tables entières ou des partitions spécifiques de tables partitionnées, et contrôlez l'étendue des données répliquées à l'aide de paramètres.

Fonctionnement

La mise en miroir opère à deux niveaux : les métadonnées et les données.

La mise en miroir des métadonnées démarre automatiquement lors de la première interrogation d'une table de data lake. Hologres déclenche une tâche de synchronisation en arrière-plan qui récupère les dernières métadonnées de la table source et les met en cache localement. L'intervalle de synchronisation par défaut est d'une minute. Les requêtes suivantes exploitent le cache des métadonnées, ce qui élimine les allers-retours répétés vers le catalogue externe.

La mise en miroir des données s'active manuellement via ALTER EXTERNAL TABLE. Une fois activée, Hologres copie les données réelles de la table (et non pas seulement les métadonnées) dans le stockage local et les maintient synchronisées avec la source. La mise en miroir des données prend en charge :

  • Les tables append-only Paimon et les tables à clé primaire avec activation des vecteurs de suppression

  • Les tables non partitionnées et les tables partitionnées, y compris des sous-ensembles de partitions spécifiques

  • L'évolution du schéma : ajout, suppression, réorganisation et renommage de colonnes. Les modifications de schéma non prises en charge entraînent un basculement vers la lecture directe de la table externe.

  • La découverte et la synchronisation automatiques des nouvelles partitions

  • Les index Hologres courants (clé de clustering, encodage par dictionnaire, bitmap) sur les données mises en miroir pour réduire les E/S et accélérer les requêtes

  • L'interrogation des données mises en miroir depuis des instances secondaires, des instances de virtual warehouse et des ressources serverless

  • La consultation de la dernière partition d'un miroir complet

  • La visualisation de l'utilisation du stockage de miroir aux niveaux de l'instance, de la base de données et de la table

  • La modification des configurations de mise en miroir des données d'une table

  • La désactivation de la mise en miroir des données pour une table

Quand utiliser la mise en miroir des données

La mise en miroir des données offre le plus d'avantages lorsque :

  • Les requêtes analysent de manière répétitive les mêmes tables ou partitions de data lake

  • La latence réseau vers le stockage distant est élevée ou instable

  • Les performances des requêtes sont limitées par les E/S distantes plutôt que par la puissance de calcul de Hologres

Pour les tables consultées uniquement occasionnellement, la mise en miroir des métadonnées seule peut suffire.

Prérequis et limites

Avant d'activer la mise en miroir des données, assurez-vous de disposer des éléments suivants :

  • Data Lake Formation (DLF) activé (version la plus récente ou ultérieure), avec des tables Apache Paimon créées.

  • Une instance Hologres avec le service d'accélération de data lake activé (voir Accélération de data lake OSS à l'aide de DLF).

  • Une External Database créée pour mapper les métadonnées des tables de data lake vers Hologres (voir CREATE EXTERNAL DATABASE).

La mise en miroir des données présente les limites suivantes :

  • Les tables externes doivent utiliser la méthode de mappage External Database. La méthode de table étrangère n'est pas prise en charge.

  • Seules les tables externes dont les métadonnées sont gérées par Data Lake Formation (DLF) sont prises en charge.

  • La mise en miroir des données depuis les branches Apache Paimon n'est actuellement pas prise en charge.

Activer la mise en miroir des données

Syntaxe

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table> 
SET(
   -- Enable data mirroring
  data_mirroring_speed_up_enable = 'on|off', 
  [data_mirroring_partition_num='1~N|all',] |[data_mirroring_partition_list='pt1,pt2...',] 
  
  -- Assign resources to data mirroring
  [data_mirroring_guc_hg_computing_resource='[serverless | local]',]
  [data_mirroring_guc_hg_experimental_serverless_computing_required_cores='<num>',] 

  -- Index
  [data_mirroring_clustering_key='[columnName{:asc]} [,...]]',]
  [data_mirroring_dictionary_encoding_columns='[columnName [,...]]',]
  [data_mirroring_bitmap_columns='[columnName [,...]]',]
  );

Paramètres

Paramètre

Obligatoire

Description

data_mirroring_speed_up_enable

Oui

Active ou désactive la mise en miroir des données. Valeurs valides : on, off.

data_mirroring_partition_num

Non

S'applique aux tables partitionnées. Spécifie le nombre de partitions les plus récentes à mettre en miroir. Valeurs valides : all (toutes les partitions) ou un entier 1 à N (les N partitions les plus récentes).

data_mirroring_partition_list

Non

S'applique aux tables partitionnées. Spécifie une liste de noms de partitions séparés par des virgules à mettre en miroir.

data_mirroring_guc_hg_computing_resource

Non

Spécifie les ressources utilisées pour le processus de construction du miroir. Par défaut : local. Valeurs valides : local (ressources de l'instance actuelle) ou serverless (ressources Serverless).

data_mirroring_guc_hg_experimental_serverless_computing_required_cores

Non

Spécifie le nombre de ressources serverless (vCPU) pour le processus de construction du miroir. Requis uniquement lorsque data_mirroring_guc_hg_computing_resource est défini sur serverless.

data_mirroring_clustering_key

Non

Définit une clé de clustering sur les données mises en miroir pour accélérer les requêtes de plage.

data_mirroring_dictionary_encoding_columns

Non

Applique l'encodage par dictionnaire sur les colonnes spécifiées pour réduire le stockage et accélérer les requêtes sur les données à faible cardinalité.

data_mirroring_bitmap_columns

Non

Définit des index bitmap sur les colonnes spécifiées pour accélérer les requêtes de filtrage.

Exemples

Table non partitionnée

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  -- Enable data mirroring
  data_mirroring_speed_up_enable = 'on',

  -- Specify the resources for the mirror build process
  data_mirroring_guc_hg_computing_resource = 'local',

  -- Set indexes
  data_mirroring_clustering_key = 'c_int:asc,c_char:desc',
  data_mirroring_dictionary_encoding_columns = 'c_int:on,c_char:auto',
  data_mirroring_bitmap_columns = 'c_int:on'
);

Table partitionnée

Choisissez l'une des étendues de partition suivantes selon vos besoins.

Mettre en miroir les N partitions les plus récentes (recommandé pour les grandes tables avec des partitions temporelles) :

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'on',
  data_mirroring_partition_num = '7',

  -- Use Serverless resources for the mirror build process
  data_mirroring_guc_hg_computing_resource = 'serverless',
  data_mirroring_guc_hg_experimental_serverless_computing_required_cores = '16',

  data_mirroring_clustering_key = 'c_int:asc,c_char:desc',
  data_mirroring_dictionary_encoding_columns = 'c_int:on,c_char:auto',
  data_mirroring_bitmap_columns = 'c_int:on'
);

Mettre en miroir toutes les partitions :

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'on',
  data_mirroring_partition_num = 'all',

  data_mirroring_guc_hg_computing_resource = 'local',

  data_mirroring_clustering_key = 'c_int:asc,c_char:desc',
  data_mirroring_dictionary_encoding_columns = 'c_int:on,c_char:auto',
  data_mirroring_bitmap_columns = 'c_int:on'
);

Mettre en miroir une liste spécifique de partitions :

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'on',
  data_mirroring_partition_list = 'pt1,pt2',

  data_mirroring_guc_hg_computing_resource = 'local',

  data_mirroring_clustering_key = 'c_int:asc,c_char:desc',
  data_mirroring_dictionary_encoding_columns = 'c_int:on,c_char:auto',
  data_mirroring_bitmap_columns = 'c_int:on'
);

Combiner partition_num et partition_list pour conserver à la fois les partitions récentes et des partitions historiques spécifiques :

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'on',
  data_mirroring_partition_num = '7',
  data_mirroring_partition_list = 'pt1',

  data_mirroring_guc_hg_computing_resource = 'local',

  data_mirroring_clustering_key = 'c_int:asc,c_char:desc',
  data_mirroring_dictionary_encoding_columns = 'c_int:on,c_char:auto',
  data_mirroring_bitmap_columns = 'c_int:on'
);

Surveiller la mise en miroir

Utilisez les outils suivants en fonction de ce que vous souhaitez vérifier.

Consulter la configuration de mise en miroir

Exécutez l'instruction suivante pour lister toutes les tables pour lesquelles la mise en miroir des données est activée :

SELECT * FROM hologres.hg_datalake_get_mirror_config();

Vérifier l'état de construction du miroir

Exécutez l'instruction suivante pour vérifier l'état de construction et la progression de la synchronisation des fichiers des tâches de mise en miroir actives :

SELECT * FROM hologres.hg_datalake_get_mirror_status();

La sortie inclut les champs suivants :

Champ

Description

external_db_name

La base de données externe où réside la table mise en miroir.

external_schema_name

Le schéma externe où réside la table mise en miroir.

external_table_name

La table externe mise en miroir.

partition

La partition en cours de mise en miroir, le cas échéant.

mirror_data_size

La taille des données mises en miroir pour la table ou la partition.

mirror_start_time

L'heure de début de la tâche de construction du miroir.

mirror_last_update_time

La dernière heure de mise à jour des données mises en miroir.

total_file_count

Nombre total de fichiers dans la table ou la partition source.

mirrored_file_count

Nombre de fichiers mis en miroir jusqu'à présent.

Pour estimer la progression de la synchronisation, comparez mirrored_file_count à total_file_count. Lorsque les deux valeurs sont égales, la construction du miroir est terminée.

Consulter l'historique de mise en miroir

Exécutez l'instruction suivante pour afficher l'historique de planification et d'exécution des tâches de mise en miroir pour une base de données externe spécifique :

SELECT *
FROM hologres.hg_user_datalake_mirror_cron_tasks
WHERE command::jsonb->>'external_db_name' = '<external_database_name>'
ORDER BY start_time DESC;

Remplacez <external_database_name> par le nom de votre base de données externe.

Confirmer que la requête utilise le miroir

Exécutez EXPLAIN ANALYZE sur votre requête pour vérifier si Hologres a servi les résultats à partir des données mises en miroir :

EXPLAIN ANALYZE SELECT <columns> FROM <holo_ext_db.ext_schema.ext_table>;

À la fin de la sortie, recherchez les deux lignes suivantes :

Meta mirror table count: use 1 miss 0.
Data mirror file count: use 12 miss 0.

Une valeur miss de 0 signifie que toutes les données ont été servies à partir du miroir. Si miss est supérieur à 0, certaines données ont encore été lues depuis le data lake distant.

Modifier la configuration du miroir

Pour mettre à jour la configuration du miroir, par exemple pour modifier le nombre de partitions, exécutez à nouveau ALTER EXTERNAL TABLE avec les paramètres mis à jour :

ALTER EXTERNAL TABLE <ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'on',
  data_mirroring_partition_num = '12'
);

Désactiver la mise en miroir des données

Pour désactiver la mise en miroir sur une table, définissez data_mirroring_speed_up_enable sur off :

ALTER EXTERNAL TABLE <holo_ext_db.ext_schema.ext_table>
SET(
  data_mirroring_speed_up_enable = 'off'
);

Après la désactivation de la mise en miroir, Hologres arrête la synchronisation des données et les requêtes accèdent directement au data lake. Les fichiers de données mis en miroir localement sont supprimés de manière asynchrone dans un délai de 30 minutes.

Étapes suivantes