Passer au contenu principal

Vue d’ensemble

Ce guide explique comment utiliser ClickHouse et S3 pour mettre en place une architecture dissociant stockage et calcul. La séparation du stockage et du calcul signifie que les ressources de calcul et de stockage sont gérées indépendamment. Dans ClickHouse, cela permet d’améliorer l’évolutivité, de mieux maîtriser les coûts et de gagner en flexibilité. Vous pouvez dimensionner séparément les ressources de stockage et de calcul selon les besoins, afin d’optimiser les performances et les coûts. L’utilisation de ClickHouse adossé à S3 est particulièrement utile dans les cas d’usage où les performances des requêtes sur des données « froides » sont moins critiques. ClickHouse prend en charge l’utilisation de S3 comme stockage pour le moteur MergeTree via S3BackedMergeTree. Ce moteur de table vous permet de tirer parti de l’évolutivité et des avantages économiques de S3 tout en conservant les performances d’insertion et de requête du moteur MergeTree. Veuillez noter que la mise en place et la gestion d’une architecture dissociant stockage et calcul sont plus complexes que celles de déploiements ClickHouse standard. Bien que ClickHouse autogéré permette de séparer le stockage et le calcul comme décrit dans ce guide, nous recommandons d’utiliser ClickHouse Cloud, qui vous permet d’exploiter cette architecture avec ClickHouse sans configuration grâce au moteur de table SharedMergeTree. Ce guide suppose que vous utilisez ClickHouse version 22.8 ou ultérieure.
Ne configurez aucune politique de cycle de vie AWS/GCS. Ce n’est pas pris en charge et cela pourrait entraîner une corruption des tables.

1. Utiliser S3 comme disque dans ClickHouse

Créer un disque

Créez un nouveau fichier dans le répertoire config.d de ClickHouse pour y stocker la configuration du stockage :
Copiez le XML suivant dans le fichier nouvellement créé, en remplaçant BUCKET, ACCESS_KEY_ID et SECRET_ACCESS_KEY par les informations du bucket AWS dans lequel vous souhaitez stocker vos données :
Si vous devez définir plus précisément les paramètres du disque S3, par exemple pour spécifier une region ou envoyer un header HTTP personnalisé, vous trouverez la liste des paramètres correspondants ici. Vous pouvez également remplacer access_key_id et secret_access_key par ce qui suit, afin de tenter d’obtenir les identifiants à partir des variables d’environnement et des métadonnées Amazon EC2 :
Après avoir créé votre fichier de configuration, vous devez attribuer le fichier à l’utilisateur et au groupe clickhouse :
Vous pouvez maintenant redémarrer le serveur ClickHouse pour que les modifications soient prises en compte :

2. Créer une table utilisant S3 comme stockage

Pour vérifier que le disque S3 est correctement configuré, nous pouvons essayer de créer une table et d’exécuter une requête dessus. Créez une table en spécifiant la nouvelle storage policy S3 :
Notez que nous n’avons pas eu besoin d’indiquer S3BackedMergeTree comme moteur. ClickHouse convertit automatiquement le type de moteur en interne s’il détecte que la table utilise S3 comme stockage. Vérifiez que la table a bien été créée avec la bonne politique :
Vous devriez obtenir le résultat suivant :
Insérons maintenant quelques lignes dans notre nouvelle table :
Vérifions que nos lignes ont bien été insérées :
Dans la console AWS, si vos données ont bien été insérées dans S3, vous devriez voir que ClickHouse a créé de nouveaux fichiers dans le bucket spécifié. Si tout a fonctionné correctement, vous utilisez maintenant ClickHouse avec séparation du stockage et du calcul !

3. Mise en place de la réplication pour la tolérance aux pannes (facultatif)

Ne configurez aucune politique de cycle de vie AWS/GCS. Ce n’est pas pris en charge et cela pourrait rendre les tables inutilisables.
Pour la tolérance aux pannes, vous pouvez utiliser plusieurs nœuds de serveur ClickHouse répartis dans plusieurs régions AWS, avec un bucket S3 par nœud. La réplication avec des disques S3 peut être mise en place à l’aide du moteur de table ReplicatedMergeTree. Consultez le guide suivant pour plus de détails :

Pour aller plus loin

Dernière modification le 2 juillet 2026