Ce document propose une introduction à la migration des données de Snowflake vers ClickHouse.Snowflake est un entrepôt de données dans le cloud principalement conçu pour migrer vers le cloud des charges de travail legacy d’entreposage de données sur site. Il est bien optimisé pour exécuter des rapports de longue durée à grande échelle. À mesure que les datasets migrent vers le cloud, les responsables des données commencent à réfléchir à d’autres façons d’en extraire de la valeur, notamment en utilisant ces datasets pour alimenter des applications en temps réel pour des cas d’utilisation internes et externes. Quand cela se produit, ils se rendent souvent compte qu’ils ont besoin d’une base de données optimisée pour prendre en charge l’analyse en temps réel, comme ClickHouse.
Comparaison
Similarités
Différences
- Les ressources de calcul dans Snowflake sont fournies via le concept de warehouses. Ceux-ci se composent d’un certain nombre de nœuds, chacun ayant une taille définie. Bien que Snowflake ne publie pas l’architecture précise de ses warehouses, il est généralement admis que chaque nœud comprend 8 vCPU, 16 GiB et 200 GB de stockage local (pour le cache). Le nombre de nœuds dépend d’une taille prédéfinie : par exemple, un x-small comporte un nœud, un small 2, un medium 4, un large 8, etc. Ces warehouses sont indépendants des données et peuvent être utilisés pour interroger n’importe quelle base de données résidant sur du stockage objet. Lorsqu’ils sont inactifs et ne sont pas soumis à une charge de requêtes, les warehouses sont mis en pause, puis redémarrent lorsqu’une requête est reçue. Alors que les coûts de stockage sont toujours pris en compte dans la facturation, les warehouses ne sont facturés que lorsqu’ils sont actifs.
- ClickHouse Cloud repose sur un principe similaire, avec des nœuds dotés d’un stockage de cache local. Plutôt que des tailles prédéfinies, les utilisateurs déploient un service avec une quantité totale de compute et de RAM disponible. Celui-ci s’adapte ensuite automatiquement de façon transparente (dans les limites définies) en fonction de la charge des requêtes, soit verticalement en augmentant (ou en diminuant) les ressources de chaque nœud, soit horizontalement en augmentant ou en réduisant le nombre total de nœuds. Les nœuds ClickHouse Cloud ont un ratio CPU/mémoire de 1, contrairement à Snowflake. Bien qu’un couplage plus lâche soit possible, les services restent couplés aux données, contrairement aux warehouses Snowflake. Les nœuds se mettent également en pause lorsqu’ils sont inactifs et reprennent s’ils sont soumis à des requêtes. Vous pouvez aussi redimensionner manuellement les services si nécessaire.
- Le cache de requêtes de ClickHouse Cloud est propre à chaque nœud, contrairement à celui de Snowflake, qui est fourni au niveau du service indépendamment du warehouse. D’après les benchmarks, le cache de nœud de ClickHouse Cloud surpasse celui de Snowflake.
- Snowflake et ClickHouse Cloud adoptent des approches différentes en matière de mise à l’échelle pour augmenter la concurrence des requêtes. Snowflake répond à ce besoin avec une fonctionnalité appelée multi-cluster warehouses. Cette fonctionnalité permet d’ajouter des clusters à un warehouse. Bien que cela n’apporte aucune amélioration de la latence des requêtes, cela offre une parallélisation supplémentaire et permet une concurrence plus élevée des requêtes. ClickHouse y parvient en ajoutant plus de mémoire et de CPU à un service via une mise à l’échelle verticale ou horizontale. Nous n’explorons pas les capacités de ces services à monter vers une concurrence plus élevée dans ce blog, nous concentrant plutôt sur la latence, mais nous reconnaissons que ce travail devrait être réalisé pour une comparaison complète. Cependant, nous nous attendons à ce que ClickHouse soit performant dans tout test de concurrence, Snowflake limitant explicitement le nombre de requêtes simultanées autorisées pour un warehouse à 8 par défaut. En comparaison, ClickHouse Cloud permet jusqu’à 1000 requêtes exécutées par nœud.
- La capacité de Snowflake à changer la taille de calcul sur un jeu de données, couplée à des temps de reprise rapides pour les warehouses, en fait une excellente solution pour les requêtes ad hoc. Pour les cas d’usage d’entrepôt de données et de data lake, cela offre un avantage par rapport aux autres systèmes.
Analyse en temps réel
- Latence des requêtes : les requêtes Snowflake présentent une latence plus élevée, même lorsque le clustering est appliqué aux tables pour optimiser les performances. Dans nos tests, Snowflake nécessite plus du double de ressources de calcul pour obtenir des performances équivalentes à celles de ClickHouse sur les requêtes auxquelles un filtre est appliqué lorsque celui-ci fait partie de la clé de clustering de Snowflake ou de la clé primaire de ClickHouse. Bien que le cache de requêtes persistant de Snowflake compense en partie ces problèmes de latence, il est inefficace dans les cas où les critères de filtrage sont plus variés. L’efficacité de ce cache de requêtes peut également être affectée par des modifications des données sous-jacentes, les entrées de cache étant invalidées dès que la table change. Même si ce n’est pas le cas dans le benchmark de notre application, un déploiement réel nécessiterait l’insertion de données nouvelles et plus récentes. Notez que le cache de requêtes de ClickHouse est spécifique au nœud et n’est pas transactionnellement cohérent, ce qui le rend plus adapté à l’analyse en temps réel. Les utilisateurs disposent également d’un contrôle granulaire sur son utilisation, avec la possibilité d’en définir l’usage requête par requête, sa taille précise, de déterminer si une requête est mise en cache (selon des limites de durée ou un nombre minimal d’exécutions), et s’il est uniquement utilisé passivement.
- Coût inférieur : les warehouses Snowflake peuvent être configurés pour se suspendre après une période d’inactivité des requêtes. Une fois suspendus, ils ne génèrent plus de frais. En pratique, cette durée d’inactivité ne peut être réduite qu’à 60 s. Les warehouses reprennent automatiquement, en quelques secondes, dès qu’une requête est reçue. Comme Snowflake ne facture les ressources que lorsqu’un warehouse est utilisé, ce comportement convient à des charges de travail souvent inactives, comme les requêtes ad hoc. Cependant, de nombreuses charges de travail d’analyse en temps réel nécessitent une ingestion continue de données en temps réel et des requêtes fréquentes, qui ne tirent aucun bénéfice de la mise en veille (comme les dashboards destinés aux clients). Cela signifie que les warehouses doivent souvent rester entièrement actifs et donc générer des coûts. Cela annule l’avantage économique de la mise en veille, ainsi que tout avantage de performance éventuellement associé à la capacité de Snowflake à retrouver un état réactif plus rapidement que les alternatives. Cette exigence d’un état actif, combinée au coût par seconde plus faible de ClickHouse Cloud pour un état actif, fait que ClickHouse Cloud offre un coût total nettement inférieur pour ce type de charges de travail.
-
Tarification prévisible des fonctionnalités : des fonctionnalités telles que les vues matérialisées
et le clustering (équivalent au
ORDER BYde ClickHouse) sont nécessaires pour atteindre les plus hauts niveaux de performance dans les cas d’usage d’analyse en temps réel. Ces fonctionnalités entraînent des frais supplémentaires dans Snowflake, en exigeant non seulement un niveau supérieur, qui augmente les coûts par crédit de 1,5x, mais aussi des coûts d’arrière-plan imprévisibles. Par exemple, les vues matérialisées entraînent un coût de maintenance en arrière-plan, tout comme le clustering, qu’il est difficile de prévoir avant utilisation. En revanche, ces fonctionnalités n’entraînent aucun coût supplémentaire dans ClickHouse Cloud, hormis une utilisation supplémentaire du CPU et de la mémoire au moment de l’insertion, généralement négligeable en dehors des cas d’usage à forte charge d’insertion. Nous avons observé dans notre benchmark que ces différences, ainsi qu’une latence des requêtes plus faible et une compression plus élevée, se traduisent par des coûts nettement inférieurs avec ClickHouse.