Qu’est-ce que la compute-compute separation ?
- des nœuds de calcul ClickHouse (appelés répliques) avec des clusters CPU et mémoire dédiés
- un endpoint (ou plusieurs endpoints créés via la Console de l’UI ClickHouse Cloud) pour se connecter au service (par exemple,
https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443) pour les connexions locales et celles d’applications tierces - un dossier de stockage objet dans lequel le service stocke toutes les données et une partie des métadonnées :
Fig. 1 - Service unique dans ClickHouse Cloud Au lieu d’avoir un seul service, vous pouvez créer plusieurs services ayant accès au même stockage partagé, ce qui vous permet de dédier des ressources à des workloads spécifiques sans avoir à dupliquer les données. Ce concept s’appelle la compute-compute separation. La compute-compute separation signifie que chaque service possède son propre ensemble de répliques et un endpoint, tout en utilisant le même dossier de stockage objet et en accédant aux mêmes tables, vues, etc. Vous pouvez ainsi choisir la capacité de calcul adaptée à votre workload. Certains workloads peuvent se contenter d’une seule réplique de petite taille, tandis que d’autres peuvent nécessiter une haute disponibilité (HA) complète et des centaines de gigaoctets de mémoire sur plusieurs répliques. La compute-compute separation vous permet également de séparer les opérations de lecture des opérations d’écriture afin qu’elles n’interfèrent pas entre elles :
Fig. 2 - Compute separation dans ClickHouse Cloud
Qu’est-ce qu’un warehouse ?
- Service principal
DWH Prod - Service secondaire
DWH Prod Subservice
Fig. 3 - Exemple de warehouse Tous les services d’un warehouse partagent les mêmes éléments :
- Région (par exemple, us-east1)
- Fournisseur Cloud (AWS, GCP ou Azure)
- Version de la base de données ClickHouse
- ClickHouse Keeper (pour gérer les répliques)
Contrôles d’accès
Identifiants de la base de données
Fig. 4 - L’utilisatrice Alice a été créée dans le Service 1, mais elle peut utiliser les mêmes identifiants pour accéder à tous les services qui partagent les mêmes données
Contrôle d’accès réseau
Fig. 5 - L’accès d’Alice au service 2 est restreint en raison des paramètres de contrôle d’accès réseau Les rôles et grants ClickHouse peuvent également être utilisés pour contrôler l’accès aux données lorsque les utilisateurs se connectent en tant qu’utilisateur individuel plutôt qu’avec l’utilisateur default.
Services read-only et read-write
- read-write
- Peuvent à la fois lire et écrire des données dans ClickHouse
- Effectuent des opérations de fusion en arrière-plan (par ex. la fusion de parts après des inserts de données), qui consomment du CPU et de la mémoire
- Peuvent exporter des données vers l’extérieur
- read-only
- Peuvent uniquement lire des données ; ils ne peuvent ni écrire ni modifier des données dans ClickHouse
- N’effectuent pas d’opérations de fusion en arrière-plan en dehors des tables système, de sorte que toutes leurs ressources sont entièrement consacrées aux requêtes de lecture
- Peuvent toujours exporter des données vers l’extérieur (par ex. via des table functions), mais ne peuvent pas modifier les données dans ClickHouse
- Se mettent en veille sans délai, contrairement aux services read-write qui peuvent être maintenus actifs par les fusions en arrière-plan.
Fig. 6 - Services read-write et read-only dans un warehouse
- Les services read-only prennent actuellement en charge les opérations de gestion des utilisateurs (CREATE, DROP, etc.).
- Les Refreshable materialized views s’exécutent uniquement sur les services read-write (RW) d’un warehouse.
- Le type d’un service (read-only ou read-write) est défini lors de sa création et ne peut pas être modifié ensuite depuis la Cloud Console. Pour passer d’un accès read-only à read-write ou inversement, créez un nouveau service dans le warehouse avec le type souhaité.
Mise à l’échelle
- Nombre de nœuds (répliques). Le service principal (le service créé en premier dans le warehouse) doit avoir au moins 2 nœuds. Chaque service secondaire peut avoir 1 nœud ou plus.
- Taille des nœuds (répliques)
- Si le service doit être mis à l’échelle automatiquement (horizontalement et verticalement)
- Si le service doit être mis à l’état inactif en cas d’inactivité
Changements du comportement de clusterAllReplicas
clusterAllReplicas() change.
L’utilisation du nom de cluster default ne cible que les réplicas du service actuel, et non l’ensemble des services du warehouse.
Par exemple, si vous appelez clusterAllReplicas(default, system, processes) depuis le service 1, seuls les processus en cours d’exécution sur le service 1 sont renvoyés.
Pour interroger tous les services du warehouse, utilisez plutôt le nom de cluster all_groups.default :
Les services secondaires mono-nœud peuvent bénéficier d’une mise à l’échelle verticale, contrairement aux services primaires mono-nœud.
Limitations
Limites de l’isolation des charges de travail
-
Tous les services en read-write gèrent par défaut les opérations de fusion en arrière-plan. Lors de l’insertion de données dans ClickHouse, la base de données commence par insérer les données dans des partitions intermédiaires, puis effectue des fusions en arrière-plan. Ces fusions peuvent consommer de la mémoire et des ressources CPU. Lorsque deux services en read-write partagent le même stockage, ils effectuent tous deux des opérations en arrière-plan. Cela signifie qu’il peut y avoir une requête
INSERTsur le Service 1, mais que l’opération de fusion soit effectuée par le Service 2. Notez que les services en read-only n’exécutent pas de fusions en arrière-plan et n’utilisent donc pas leurs ressources pour cette opération. Notre support peut désactiver les fusions sur un service. - Tous les services en read-write effectuent les opérations d’insertion du moteur de table S3Queue. Lors de la création d’une table S3Queue sur un service en read-write, tous les autres services en read-write du warehouse peuvent lire des données depuis S3 et écrire des données dans la base de données.
- Les insertions sur un service en read-write peuvent empêcher un autre service en read-write de passer en veille si la mise en veille est activée. Il existe des situations où un service effectue des opérations de fusion en arrière-plan pour un autre service. Ces opérations en arrière-plan peuvent empêcher le second service de passer en veille. Une fois les opérations en arrière-plan terminées, le service repassera en veille. Les services en read-only ne sont pas affectés.
Informations utiles
- Versions de ClickHouse : le calendrier des mises à niveau est déterminé par les paramètres du service principal. Les services secondaires ne peuvent pas avoir de calendrier de publication distinct de celui du service principal.
-
Les requêtes
CREATE/RENAME/DROP DATABASEpeuvent, par défaut, être bloquées par des services mis en veille ou arrêtés. Si ces requêtes sont exécutées lorsque le service est mis en veille ou arrêté, elles peuvent rester bloquées. Pour contourner ce problème, vous pouvez exécuter les requêtes de gestion de la base de données avecsettings distributed_ddl_task_timeout=0au niveau de la session ou de la requête.
- Service principal avec une seule réplique Aujourd’hui, par défaut, les services secondaires peuvent avoir une seule réplique, tandis que le service principal doit en avoir au moins 2. Pour activer les services principaux avec une seule réplique, veuillez contacter le support. Ce comportement sera activé par défaut au 2e trimestre 2026.
- Mise en veille du service principal : la mise en veille automatique du service principal est activée par défaut.
Tarification
Sauvegardes
- Comme tous les services d’un même warehouse partagent le même stockage, les sauvegardes sont effectuées uniquement sur le service principal (initial). Ainsi, les données de tous les services d’un warehouse sont sauvegardées.
- Si vous restaurez une sauvegarde à partir du service principal d’un warehouse, elle sera restaurée dans un tout nouveau service, non connecté au warehouse existant. Vous pourrez ensuite ajouter d’autres services à ce nouveau service dès que la restauration sera terminée.
Comment configurer un warehouse
Création d’un warehouse
Fig. 7 - Cliquez sur l’icône plus pour créer un nouveau service dans un warehouse Sur l’écran de création du service, le service d’origine sera sélectionné dans la liste déroulante comme source de données du nouveau service. Une fois créés, ces deux services formeront un warehouse.
Renommer un warehouse
- Vous pouvez sélectionner “Trier par warehouse” sur la page des services, en haut à droite, puis cliquer sur l’icône en forme de crayon à côté du nom du warehouse
- Vous pouvez cliquer sur le nom du warehouse depuis n’importe lequel des services et le renommer à cet endroit
Suppression d’un warehouse
- Supprimez tous les services créés en plus du premier service ;
- Supprimez le premier service (avertissement : toutes les données du warehouse seront supprimées à cette étape).