Pour réduire les coûts de stockage, améliorer les performances des requêtes et optimiser l'utilisation des ressources système, les clusters Alibaba Cloud ClickHouse en édition Community-compatible Edition et en Enterprise Edition utilisant le type de stockage ESSD_L1 ou ESSD_L2 prennent en charge le stockage hiérarchisé des données chaudes et froides. Cette fonctionnalité permet de stocker les données sur différents supports selon leur fréquence d'accès. Cette rubrique explique comment activer le stockage hiérarchisé des données chaudes et froides et configurer les politiques de stockage associées.
Prérequis
Édition compatible avec la communauté
Le cluster exécute la version 20.8 ou ultérieure.
La fonctionnalité de sauvegarde des données est désactivée pour le cluster.
Pour les clusters exécutant une version antérieure, migrez les données vers un cluster exécutant la version 20.8 ou ultérieure avant d'activer le stockage hiérarchisé des données chaudes et froides. Pour plus d'informations, consultez la rubrique Migration de données entre les clusters Alibaba Cloud ClickHouse Community-compatible Edition.
Enterprise Edition
Le cluster utilise le type de stockage ESSD_L1 ou ESSD_L2. Pour utiliser ce type de stockage, soumettez un ticket afin d'ajouter votre compte à la liste d'autorisation.
Contexte
Le stockage hiérarchisé des données chaudes et froides classe les données en deux catégories selon leur fréquence d'accès :
Données chaudes : données fréquemment consultées. Ces données sont stockées sur un disque de données chaudes (par exemple, un disque ESSD ou ultra sélectionné lors de la création du cluster) pour garantir des performances d'accès élevées.
Données froides : données rarement consultées. Ces données sont stockées sur un disque de données froides moins coûteux pour optimiser les coûts de stockage. Le stockage froid utilise exclusivement le stockage d'objets OSS et ne peut pas être modifié pour utiliser des disques ESSD PL0 ou d'autres types de disques personnalisés.
Les politiques de stockage pour le stockage hiérarchisé des données chaudes et froides sont les suivantes :
Édition compatible avec la communauté
|**Politique de stockage**
|
**Description**
| | --- | --- | |
Politique de stockage par défaut
|
Les nouvelles données sont écrites sur le disque de données chaudes pour permettre des requêtes haute performance. Lorsque l'espace utilisé sur le disque de données chaudes atteint un seuil spécifié, le système déplace automatiquement la partie de données la plus volumineuse vers le disque de données froides afin de libérer de l'espace.
| |
Politique de stockage basée sur le TTL
|
Cette politique étend la politique de stockage par défaut. Vous pouvez ajouter une clause TTL pour déplacer automatiquement toutes les données plus anciennes qu'un intervalle spécifié vers le disque de données froides.
|
Enterprise Edition
Le système décharge automatiquement les données qui ne sont plus modifiées vers le service OSS, moins coûteux, afin de réduire les coûts de stockage.
TTL global : dans l'Enterprise Edition, vous pouvez configurer un TTL global pour contrôler le stockage hiérarchisé des données chaudes et froides.
Heure de déchargement : après avoir activé le stockage hiérarchisé des données chaudes et froides, le système analyse tous les fichiers de données chaque jour à 00:00 UTC. Il décharge les parties de données dont l'âge dépasse le TTL global du disque de données chaudes vers le disque de données froides (OSS).
Précautions
Édition compatible avec la communauté
Activez cette fonctionnalité pendant les heures creuses. Après l'activation, le cluster redémarre immédiatement. Pendant le redémarrage, vous pouvez uniquement consulter les informations du cluster ; il est impossible de mettre à niveau la configuration, de mettre à l'échelle le cluster (ajout ou suppression de nœuds) ou de modifier les paramètres.
-
Vous devez spécifier une politique de stockage pour vos tables lorsque vous utilisez cette fonctionnalité. ApsaraDB for ClickHouse prend uniquement en charge la politique de stockage
hot_to_cold. Les politiques de stockage personnalisées, telles que la configuration de plusieurs politiques (par exemple,defaultethd_policy) pointant vers différents répertoires de stockage, ne sont pas prises en charge.Lors de la création d'une table, utilisez
SETTINGS storage_policy = 'hot_to_cold'pour spécifier la politique de stockage.-
Modifiez la politique de stockage d'une table existante.
Après le 1er janvier 2024
Exécutez l'instruction suivante pour modifier la politique :
ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';Avant le 1er janvier 2024
Vous pouvez ajouter une nouvelle politique de stockage via des opérations de gestion spécifiques. Cela vous permet d'utiliser la nouvelle politique pour migrer les données du disque de données chaudes vers le disque de données froides.
Cette fonctionnalité ne peut pas être désactivée une fois activée.
La rétrogradation de disque n'est pas prise en charge pour les clusters avec le stockage hiérarchisé froid-chaud activé.
Enterprise Edition
La modification des données dans le stockage froid, par exemple via des opérations
MutationouOptimize, ou une opérationMergedéclenchée par le système, recharge les données dans le stockage chaud pour reconstruire les fichiers de données. Les nouveaux fichiers de données ne sont pas immédiatement déplacés vers le stockage froid. Ils ne seront déchargés à nouveau que lorsque leur âge dépassera le TTL global. Par conséquent, évitez les ajouts, suppressions ou modifications fréquents des données froides.Le déchargement n'est pas instantané. Le système ajuste dynamiquement le taux de déchargement en fonction de facteurs tels que la pression d'E/S actuelle sur le système de stockage. Le processus peut prendre plusieurs heures, selon la quantité de données à décharger.
-
Les règles suivantes s'appliquent lors de la modification du TTL :
Si vous augmentez le TTL, la modification prend effet au prochain cycle de déchargement. Cependant, les données déjà présentes dans le stockage froid ne sont pas déplacées vers le stockage chaud.
Si vous diminuez le TTL, la modification prend effet au prochain cycle de déchargement.
La valeur minimale du TTL global est de 1 jour, et l'incrément minimal d'ajustement est de 1 jour.
La rétrogradation de disque n'est pas prise en charge pour les clusters avec le stockage hiérarchisé froid-chaud activé.
Facturation
-
Les règles de facturation sont les suivantes :
|
**Type**
|
**Détails**
| | --- | --- | |
Stockage de données chaudes
|
La capacité de stockage des données chaudes correspond à la capacité de stockage que vous avez achetée pour le cluster.
| |
Stockage de données froides
|
Le stockage des données froides est facturé selon le modèle de paiement à l'utilisation. Vous n'avez pas besoin d'acheter à l'avance une quantité fixe d'espace de stockage. Vous êtes facturé à l'heure pour l'espace utilisé.
| Pour plus d'informations sur les prix unitaires du stockage des données froides, consultez les rubriques Frais d'espace de stockage pour l'édition Community-compatible Edition et Facturation à l'utilisation pour l'Enterprise Edition.
Formule de facturation : Frais de stockage froid = Prix unitaire du stockage de données froides × Utilisation des données froides × Durée d'utilisation.
Exemple : si le prix unitaire du stockage de données froides est de 0,000026 USD par Go-heure et que vous utilisez 2 000 Go de stockage froid de 19:00 à 20:00, le total des frais est calculé comme suit : 0,000026 USD par Go-heure × 2 000 Go × 1 heure = 0,052 USD. Si vous libérez 500 Go d'espace de stockage froid et que l'utilisation réelle est de 1 500 Go de 20:00 à 21:00, le total des frais pour cette heure est calculé comme suit : 0,000026 USD par Go-heure × 1 500 Go × 1 heure = 0,039 USD.
Les prix indiqués dans cet exemple sont fournis à titre indicatif uniquement. Seuls les prix affichés dans la console font foi.
Activer le stockage hiérarchisé
Édition compatible avec la communauté
Connectez-vous à la console Alibaba Cloud ClickHouse. Dans le coin supérieur gauche de la page, sélectionnez la région où votre cluster est déployé.
Sur la page Clusters, cliquez sur l'onglet Clusters of Community-compatible Edition, puis cliquez sur l'ID du cluster cible.
Dans le volet de navigation de gauche, cliquez sur Cold and hot layered storage.
Cliquez sur Click to Enable Layered Storage.
-
Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
Après confirmation de l'opération, le cluster redémarre. La fonctionnalité est activée une fois que l'état du cluster passe de Changing Configuration à Running.
Enterprise Edition
Pour Alibaba Cloud ClickHouse Enterprise Edition, vous devez d'abord soumettre un ticket pour ajouter votre compte à la liste d'autorisation de cette fonctionnalité. Ensuite, suivez les étapes ci-dessous pour activer la fonctionnalité pour votre cluster.
Connectez-vous à la console Alibaba Cloud ClickHouse. Dans le coin supérieur gauche de la page, sélectionnez la région où votre cluster est déployé.
Sur la page Clusters, cliquez sur l'onglet Enterprise Edition Clusters, puis cliquez sur l'ID du cluster cible.
Dans le volet de navigation de gauche, cliquez sur Cold and hot layered storage.
Cliquez sur Click to Enable Layered Storage.
Dans la boîte de dialogue qui s'affiche, configurez le TTL global.
-
Cliquez sur OK.
La fonctionnalité est activée une fois que l'état du cluster passe à Running et que la page Tiered Storage indique que la fonctionnalité est Enabled.
Une fois la fonctionnalité activée, vous pouvez cliquer sur l'icône de modification à côté de Parameter Value pour ajuster le TTL global. Le nouveau TTL prendra effet lors du prochain cycle de déchargement (à 00:00 UTC le jour suivant).
Gérer les politiques de stockage pour l'édition Community-compatible edition
Politique de stockage par défaut
Après avoir activé le stockage hiérarchisé des données chaudes et froides, la politique de stockage par défaut inclut les paramètres suivants.
|
Paramètre |
Description |
|
move_factor |
Lorsque l'espace disponible sur le disque de données chaudes descend en dessous de ce ratio, le système déplace automatiquement la partie de données la plus volumineuse vers le disque de données froides. La valeur de ce paramètre varie de Remarque
Pour afficher l'espace disque, consultez la section Afficher l'espace disque. |
|
prefer_not_to_merge |
Indique s'il faut fusionner les données sur le disque de données froides. Valeurs possibles :
|
Politique de stockage basée sur le TTL
Vous pouvez ajouter une clause TTL à la politique de stockage par défaut pour déplacer automatiquement toutes les données plus anciennes qu'un intervalle spécifié vers le disque de données froides.
Syntaxe
TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk'
Paramètres
|**Paramètre**
|
**Description**
| | --- | --- | |
time_column
|
Une colonne de type de données Date ou DateTime.
| |
number unit
|
L'intervalle de temps.
Les unités courantes incluent DAY, WEEK, MONTH et YEAR.
|
Pour plus d'informations sur les clauses TTL, consultez la documentation TTL for columns and tables.
Exemple
L'instruction suivante crée une table et déplace toutes les données datant de plus de 90 jours vers le disque de données froides en se basant sur la colonne date.
CREATE TABLE ttl_test_tbl
(
`f1` String,
`f2` String,
`f3` Int64,
`f4` Float64,
`date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';
Modifier une politique basée sur le TTL
Vous pouvez modifier la colonne Date ou DateTime ainsi que l'intervalle de temps pour une politique de stockage hiérarchisé basée sur le TTL.
Précautions
-
Impact sur les données :
Données existantes : par défaut, la nouvelle politique s'applique également aux données existantes, mais ce processus est asynchrone et prend du temps. Pour appliquer la modification immédiatement, exécutez l'instruction
ALTER TABLE ... MATERIALIZE TTL;après avoir modifié la politique. Si vous ne souhaitez pas modifier la politique de stockage pour les données existantes, exécutez l'instructionSET materialize_ttl_after_modify=0;avant de modifier la politique.Les nouvelles données sont hiérarchisées selon la nouvelle politique.
Après avoir modifié une politique de stockage basée sur le TTL, les données déjà présentes sur le disque de données froides ne sont pas automatiquement déplacées vers le disque de données chaudes. Pour déplacer ces données, consultez la section Déplacer des données entre les disques de données chaudes et froides.
Syntaxe
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk';
Paramètres
|**Paramètre**
|
**Description**
| | --- | --- | |
table_name
|
Le nom de la table.
| |
time_column
|
La colonne Date ou DateTime cible.
| |
number unit
|
L'intervalle de temps.
Les unités courantes incluent DAY, WEEK, MONTH et YEAR.
|
Gestion des données pour l'édition Community-compatible edition
Déplacer des données entre les disques chauds et froids
-
Déplacer des données d'un disque de données chaudes vers un disque de données froides :
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk'; -
Déplacer des données d'un disque de données froides vers un disque de données chaudes :
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';Remarquepartitioncorrespond au nom de la partition, que vous pouvez trouver dans la tablesystem.parts.
Afficher les données sur les disques chauds et froids
-
Afficher les données sur un disque de données chaudes :
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1; -
Afficher les données sur un disque de données froides :
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;
Afficher l'espace disque
Après avoir activé le stockage hiérarchisé des données chaudes et froides, vous pouvez exécuter l'instruction suivante pour afficher l'espace disque :
SELECT * FROM system.disks;
Le résultat suivant est renvoyé :
┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space──────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │ 0 │ OSS │
│ default │ /clickhouse/data/data/ │ 201663209472 │ 207083249664 │ 5420040192 │ 0 │ local │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘
Le tableau suivant décrit les colonnes du jeu de résultats.
|
Paramètre |
Description |
|
name |
Le nom du disque.
|
|
path |
Le chemin de stockage des données sur le disque. |
|
free_space |
L'espace disponible sur le disque, en octets. L'espace disponible sur un disque de données froides n'est pas limité. |
|
total_space |
L'espace total sur le disque, en octets. L'espace total sur un disque de données froides est pratiquement illimité. |
|
used_space |
L'espace disque utilisé, en octets. |
|
keep_free_space |
L'espace libre réservé, en octets. |
|
type |
Le support de stockage.
|
FAQ
Q : Pourquoi mes données ne sont-elles pas déplacées du disque de données chaudes vers le disque de données froides ?
R : Le déplacement des données vers un disque de données froides dépend des valeurs de move_ttl_info.min et de move_ttl_info.max dans la table system.parts. Vous pouvez exécuter l'instruction suivante pour interroger ces valeurs :
SELECT move_ttl_info.min, move_ttl_info.max FROM system.parts WHERE database = '<db_name>' AND table = '<tb_name>' AND disk_name = 'default'
Si l'heure actuelle est antérieure à l'une de ces valeurs, le système ne déplace pas la partie de données. Il est également possible que le système soit en train de traiter ou de préparer le déplacement des données, et que l'opération ne soit pas encore terminée.