Redshift Concurrency Scaling
Introduction
Amazon Redshift est un data warehouse puissant qui vous aide à analyser rapidement de grandes quantités de données. À mesure que les volumes de données augmentent et que les demandes des utilisateurs augmentent, maintenir des performances de requête optimales peut devenir un défi. C’est ici que le Redshift Concurrency Scaling entre en jeu.
Cet article couvrira les bases du Redshift Concurrency Scaling, y compris les commandes de configuration et les paramètres. Nous aborderons également comment il aide à distribuer les charges de travail pour des applications à hautes performances et haute disponibilité.
Qu’est-ce que le Redshift Concurrency Scaling ?
Le Redshift Concurrency Scaling ajuste la capacité du cluster pour plus de requêtes de lecture simultanées, ce qui fait une grande différence. Il change le nombre de questions que votre groupe peut gérer à la fois, assurant des réponses toujours rapides et cohérentes.
Comment ça fonctionne ? Redshift provisionne automatiquement des clusters transitoires supplémentaires lorsque le Concurrency Scaling est activé. Cela se produit à chaque fois que le nombre de requêtes utilisateur simultanées dépasse le seuil de la file d’attente configurée. Les groupes temporaires lisent des requêtes que Redshift ne peut gérer que dans la file d’attente.
Votre groupe principal peut continuer à travailler sur d’autres tâches sans interruption. Une fois que la taille de la file tombe en dessous du seuil, le système termine automatiquement les clusters transitoires pour optimiser les coûts.
Configurer Concurrency Scaling
Pour exploiter la puissance du Redshift Concurrency Scaling, vous devez l’activer sur votre cluster. Voici comment :
1. Assurez-vous que votre cluster fonctionne avec un nœud de type ra3.16xlarge ou supérieur.
2. Exécutez la commande SQL suivante pour activer le Concurrency Scaling :
ALTER CLUSTER <votre-nom-de-cluster> SET CONCURRENCY SCALING ENABLED;
3. Configurez le mode Concurrency Scaling en utilisant la commande SET. Il existe deux modes disponibles :
– AUTO : Redshift gère automatiquement le nombre de clusters transitoires en fonction de la charge de travail. C’est le mode par défaut.
– MANUEL : Vous spécifiez le nombre maximum de clusters transitoires.
4. Pour définir le mode, utilisez la commande suivante :
ALTER CLUSTER <votre-nom-de-cluster> SET CONCURRENCY SCALING MODE 'AUTO|MANUAL';
5. Si vous utilisez le mode MANUAL, définissez le nombre maximum de clusters transitoires :
ALTER CLUSTER <votre-nom-de-cluster> SET CONCURRENCY SCALING MAX_CLUSTERS <nombre>;
Distribution de la Charge de Travail avec les Files de Requêtes
Le Redshift Concurrency Scaling fonctionne de concert avec les files de requêtes pour distribuer efficacement les charges de travail à travers votre cluster et les clusters transitoires. Les files de requêtes vous permettent de prioriser et de gérer différents types de requêtes en fonction de leur importance et de leurs besoins en ressources.
Par défaut, Redshift a une seule file d’attente par défaut. Cependant, vous pouvez créer des files supplémentaires pour séparer et prioriser les charges de travail. Voici un exemple de création d’une nouvelle file de requêtes :
CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
Dans cet exemple, nous créons une file de rapport avec une priorité de 5. Nous relions ensuite la file de rapport à un groupe de requête appelé ‘reporting’. Les requêtes soumises à cette file auront une priorité plus élevée que celles de la file par défaut.
Pour acheminer les requêtes vers des files spécifiques, vous pouvez utiliser la commande SET :
SET query_group TO 'reporting';
Cette action définit le groupe de requêtes de la session en cours sur ‘reporting’, et le système acheminera les requêtes suivantes vers la file associée.
Paramètres du Concurrency Scaling pour la Haute Disponibilité
Lors de la configuration du Redshift Concurrency Scaling pour des applications à haute disponibilité, plusieurs paramètres clés sont à considérer :
- max_concurrency_scaling_clusters : Ce paramètre spécifie le nombre maximum de clusters transitoires qui peuvent être provisionnés. Définissez-le en fonction de vos besoins en charges de travail et de vos contraintes budgétaires.
- concurrency_scaling_mode : Comme mentionné précédemment, ce paramètre détermine si le Concurrency Scaling est géré automatiquement ou manuellement.
- wlm_query_slot_count : Ce paramètre définit le nombre de slots de requêtes (requêtes simultanées) par cluster. Ajustez-le en fonction des caractéristiques de votre charge de travail et des ressources disponibles.
- query_group : Utilisez des groupes de requêtes pour acheminer les requêtes vers des files spécifiques et prioriser les charges de travail critiques.
Voici un exemple de configuration pour un environnement haute disponibilité :
ALTER CLUSTER <votre-nom-de-cluster> SET CONCURRENCY SCALING MAX_CLUSTERS 5; ALTER CLUSTER <votre-nom-de-cluster> SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER <votre-nom-de-cluster> SET wlm_query_slot_count 50; CREATE QUEUE critical_queue PRIORITY 10 QUERY_GROUP 'critical'; CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
Dans cet exemple, nous aurons jusqu’à 5 clusters temporaires. Nous activerons également le Concurrency Scaling automatique. De plus, nous assignerons 50 slots de requêtes par cluster. Nous créons deux files, critical_queue et reporting_queue, avec des priorités différentes pour gérer séparément les charges de travail critiques et de rapport.
Exemple Réel
Considérons un scénario réel où une entreprise de commerce électronique utilise Redshift pour ses besoins d’entrepôt de données. Pendant les périodes de ventes chargées, ils obtiennent beaucoup de requêtes de différents départements comme les ventes, l’inventaire et l’analyse des clients.
Pour gérer cette charge de travail accrue, ils activent le Redshift Concurrency Scaling avec la configuration suivante :
ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING ENABLED; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MAX_CLUSTERS 10; CREATE QUEUE sales_analytics_queue PRIORITY 8 QUERY_GROUP 'sales_analytics'; CREATE QUEUE inventory_queue PRIORITY 6 QUERY_GROUP 'inventory'; CREATE QUEUE customer_segmentation_queue PRIORITY 4 QUERY_GROUP 'customer_segmentation';
Lorsque trop de requêtes sont en cours d’exécution simultanément, Redshift créera davantage de clusters temporaires pour gérer la charge de travail. Les requêtes sont efficacement distribuées à travers le cluster principal et les clusters transitoires en fonction de leurs groupes de requêtes assignés et des priorités des files.
En conséquence, l’entreprise de commerce électronique maintient des performances de requêtes optimales pendant les périodes de pointe, assurant des informations en temps opportun pour des décisions commerciales critiques. Les requêtes d’analyse des ventes reçoivent la plus haute priorité, suivies des requêtes de gestion de l’inventaire et de segmentation des clients.
Conclusion
Le Redshift Concurrency Scaling vous permet d’ajuster la capacité de votre cluster pour gérer efficacement les augmentations soudaines de requêtes. En utilisant des files de requêtes et en configurant l’allocation des ressources, vous pouvez distribuer efficacement les charges de travail et prioriser les requêtes critiques pour des applications à hautes performances et haute disponibilité.
N’oubliez pas de prendre en compte des facteurs tels que les caractéristiques de la charge de travail, la disponibilité des ressources et le budget lors de la configuration du Concurrency Scaling. Avec la bonne configuration, vous pouvez débloquer le plein potentiel de Redshift et offrir des performances de requête ultra-rapides à vos utilisateurs.
Pour plus d’informations sur le Redshift Concurrency Scaling, consultez la documentation officielle d’AWS :
DataSunrise : Améliorer la Sécurité et la Conformité des Bases de Données
Alors que Redshift offre des fonctionnalités robustes pour les performances et l’évolutivité, assurer la sécurité et la conformité de vos données est tout aussi important. DataSunrise propose des outils conviviaux et flexibles pour la sécurité des bases de données, le masquage et la conformité. Avec DataSunrise, vous pouvez mettre en œuvre des configurations haute disponibilité et protéger vos données sensibles.
Pour en savoir plus sur les solutions de DataSunrise et les voir en action, visitez notre site web et planifiez votre démonstration personnalisée aujourd’hui !