Avec l'arrivée des services de Data Warehouse entièrement gérés, l'espace ETL subit un changement de paradigme. De nombreuses entreprises choisissant de migrer de leurs installations de bases de données sur site. Le plus grand avantage de ces services est le soulagement de toutes les activités domestiques liées au maintien d'une base de données fiable et toujours disponible. Redshift est un choix très populaire pour un service d'entrepôt de données entièrement géré qui peut atteindre des pétaoctets de données.
Pour les entreprises qui utilisent des bases de données sur site, PostgreSQL reste l'une des solutions les plus prisées en raison de ses performances, de sa fiabilité et de ses fonctionnalités. PostgreSQL est développé depuis plus de 30 ans, ce qui en fait un excellent choix pour les charges de travail OLTP.
Dans cet article, nous allons comparer ces deux Data Warehouses.
Qu’est ce que Amazon Redshift ?
Qu’est ce que PostgreSQL ?
Redshift vs PostgreSQL
Quand utiliser Amazon Redshift ?
Quand utiliser PostgreSQL ?
Conclusion
Qu’est ce que Amazon Redshift ?
Redshift est un data warehouse entièrement géré en tant que service proposé par Amazon. Redshift dispose d'un query layer très similaire au query layer standard de PostgreSQL, mais il lui manque de nombreuses fonctionnalités comparé à celui-ci.
Redshift peut stocker des pétaoctets de données et est conçu pour exécuter des requêtes analytiques complexes portant sur des millions de lignes.
Redshift dispose d'un cluster de noeuds, dont l'un est désigné comme node leader. Le noeud leader est responsable de toutes les communications avec les clients, de l'optimisation et de la planification des requêtes, de la délégation des tâches aux noeuds membres, etc. Les noeuds membres sont ceux qui stockent les données et exécutent le plan de requête fourni par le noeud leader.
Redshift permet aux utilisateurs finaux d'évoluer en augmentant le nombre de noeuds ou en mettant à niveau la configuration des noeuds, ou les deux. La mise à l'échelle s'effectue généralement en quelques minutes pour les noeuds de nouvelle génération avec un support de redimensionnement élastique, mais peut prendre des heures pour certains noeuds d'ancienne génération. Redshift permet également aux clients de choisir parmi différents types de noeuds en fonction de leurs exigences de performance et de leur budget. Toutes les tâches administratives liées à la maintenance du cluster sont automatisées et les utilisateurs n'ont pas besoin d'intervenir beaucoup pour maintenir le cluster Redshift en fonctionnement.
Redshift est une offre payante d'Amazon et le prix comprend le logiciel, les ressources informatiques et les ressources de stockage. Amazon permet aux clients de ne payer que pour leur utilisation réelle et leur permet d'évoluer à tout moment en toute transparence. Ce contrôle plus étroit du budget est également possible en ce qui concerne les performances d'interrogation en ajustant les créneaux d'interrogation et les files d'attente de gestion des charges de travail AWS en conséquence.
Qu’est ce que PostgreSQL ?
PostgreSQL est une base de données libre et gratuite qui convient parfaitement aux charges de travail transactionnelles. PostgreSQL offre toutes les fonctionnalités typiques attendues d'une base de données transactionnelle d'entreprise, comme des clés primaires uniques, l'intégrité référentielle des clés étrangères, des types définis par l'utilisateur, le contrôle de la concurrence multi-version, etc.
La dernière version de PostgreSQL permet d'avoir des tables qui peuvent stocker des centaines de To de données et, en pratique, n'est limitée que par les contraintes d'espace disque. En interne, PostgreSQL fonctionne sur la base d'une architecture à serveur unique, sans aucun concept de grappe. PostgreSQL s'exécute en tant que processus unique et le support du multi-cœur dans le cas de requêtes uniques est possible à partir de la version 9.6.
Le plus grand avantage de PostgreSQL est qu'il est entièrement gratuit et que l'utilisateur final ne doit payer que l'infrastructure sur laquelle il est déployé. La mise à niveau de la capacité de stockage de PostgreSQL peut être un problème car l'utilisateur final devra gérer de nombreuses sauvegardes et copies de données à l'aide des outils fournis.
Nous avons maintenant une idée de base des caractéristiques de Redshift et de PostgreSQL. Il est maintenant temps de comparer ces deux bases de données pour voir laquelle peut être la meilleure base de données pour votre cas d'utilisation.
Redshift vs PostgreSQL
Dans cette section, nous allons comparer Redshift et Postgres sur la base des caractéristiques suivantes :
Redshift vs PostgreSQL : Qui a la meilleure scalabilité ?
Redshift a été conçu avec une scalabilité sans faille comme critère de base. Redshift peut être scalé en quelques minutes pour les noeuds de nouvelle génération avec le support du redimensionnement élastique. La façon habituelle de mettre à l'échelle Redshift consiste à ajouter des noeuds, à mettre à jour la configuration des noeuds ou à combiner les deux. Tout cela est géré par la console AWS et l'utilisateur final n'a pas à intervenir, si ce n'est pour lancer la mise à l'échelle.
PostgreSQL étant une base de données sur site basée sur un seul serveur, la mise à l'échelle ne fait pas partie de ses points forts. Si la capacité de stockage doit être mise à niveau, le client devra d'abord copier les données sur de nouveaux disques pour assurer une transition transparente. Cela dit, PostgreSQL est désormais disponible en tant que service entièrement géré par Amazon via son offre RDS. Dans ce cas, la mise à l'échelle est relativement facile puisqu'elle est gérée par AWS.
Redshift vs PostgreSQL : Qui a les meilleures performances ?
Redshift est optimisé pour les charges de travail analytiques complexes. Il offre de meilleures performances pour les requêtes avec une grande plage d'analyse. Dans le cas de requêtes plus simples avec des plages de balayage de données courtes, Redshift obtient de mauvais résultats par rapport aux bases de données traditionnelles. Cela s'explique par le fait que Redshift dispose d'un optimiseur et d'un planificateur de requêtes sophistiqués qui prennent parfois plus de temps que le temps d'exécution réel. En d'autres termes, s'il n'y a pas grand-chose à optimiser, ce planificateur de requêtes va en fait tirer les performances de Redshift. Redshift dispose également d'un mécanisme appelé "concurrency scaling" ou mise à l'échelle de la simultanéité, qui lui permet de prendre en charge un nombre pratiquement illimité d'utilisateurs et de requêtes simultanées.
PostgreSQL affiche généralement de bonnes performances lorsqu'il s'agit de requêtes qui ne testent pas ses limites. PostgreSQL est optimisé pour les charges de travail transactionnelles en ligne et se comporte très bien jusqu'à ce que les requêtes doivent analyser des millions de lignes. Dans ce cas, le temps d'exécution peut augmenter considérablement, ce qui entraîne des processus de requêtes interminables.
Redshift vs PostgreSQL : Qui est le meilleur en réplication des données ?
Avec PostgreSQL, le chargement des données peut être effectué à l'aide de la commande COPY FROM qui charge les lignes d'un fichier vers une table. Cette commande est optimisée pour charger un grand nombre de lignes en parallèle.
Redshift dispose également d'une commande COPY qui peut être utilisée pour charger des données de S3 vers des tables Redshift. En tant que meilleure pratique, il est préférable d'utiliser cette commande avec plusieurs fichiers de taille égale pour profiter du parallélisme massif de Redshift.
Étant donné que vous essayez de déplacer des données vers l'un de ces systèmes pour des cas d'utilisation commerciale clé, il est important de disposer de données fiables, précises et cohérentes. Bien que la création de scripts personnalisés semble être une option simple pour transférer des données, il existe de nombreuses limitations, réserves et difficultés que vous pourrez découvrir.
Redshift vs PostgreSQL : Qui a la meilleure structure de données ?
PostgreSQL est une base de données orientée lignes, tandis que Redshift est une base de données orientée colonnes. Cette différence a un effet sur la capacité de traitement des requêtes des bases de données. Redshift s'en sort bien dans les cas où une récupération rapide des colonnes est nécessaire.
PostgreSQL offre un excellent support pour les contraintes de clés uniques et garantit l'intégrité référentielle des clés étrangères. Redshift n'a pas cette capacité et il est de la responsabilité de l'utilisateur final de s'en assurer.
En ce qui concerne les types de données, Redshift ne supporte qu'une poignée d'entre eux.
PostgreSQL, quant à lui, prend en charge tous les types de données mentionnés ci-dessus et bien d'autres encore. Certains des types de données PostgreSQL notables non pris en charge par Redshift sont les types de données Datetime, les tableaux et JSON. Il y a beaucoup d'autres types de données qui ne sont pas pris en charge par Redshift, mais pour résumer, PostgreSQL a un support des types de données beaucoup plus complet par rapport à Redshift.
Redshift vs PostgreSQL : Qui a la meilleure maintenance ?
Redshift et PostgreSQL nécessitent tous deux l'exécution de certaines tâches administratives par l'utilisateur final pour assurer le bon fonctionnement du service.
Ces deux bases de données utilisent des marqueurs de suppression lors de l'exécution des instructions UPDATE et DELETE et doivent donc récupérer l'espace disque ultérieurement par une commande manuelle appelée VACUUM. Les versions récentes de ces deux bases de données prennent en charge l'exécution automatique de ces commandes en fonction d'un nombre seuil de lignes modifiées, mais il est tout de même recommandé de le faire manuellement si l'utilisateur a connaissance de nombreuses mises à jour ou suppressions dans une table.
Une autre commande de ce type est la commande ANALYZE qui aide le planificateur de requêtes à maintenir ses statistiques à jour. Comme ces statistiques peuvent influencer directement les performances du traitement des requêtes, il est recommandé de le faire manuellement de temps en temps.
Redshift vs PostgreSQL : Sécurité des données
Redshift est livré avec la suite complète de sécurité par défaut. Les clients peuvent choisir d'isoler les clusters Redshift en utilisant les clouds privés virtuels d'Amazon. La console IAM d'Amazon permet de contrôler finement quel utilisateur a accès à quelles options. Les données sont cryptées au repos et en mouvement et le support SSL est également présent.
PostgreSQL fournit également le cryptage, le support SSL, la gestion des accès utilisateurs, etc., mais il incombe à l'utilisateur de tout gérer et d'assurer une sécurité suffisante en utilisant ces fonctionnalités. L'isolation du réseau devra être effectuée séparément pour le serveur matériel réel.
Quand utiliser Amazon Redshift ?
Votre volume de données peut atteindre des pétaoctets.
Vous souhaitez vous décharger de toutes vos activités de maintenance et d'infrastructure pour vous concentrer uniquement sur la logique métier de base.
Votre charge de travail est principalement de type analytique et de reporting et vous anticipez qu'elle interfère avec les charges de travail OLTP si elle est traitée avec la même base de données.
Vous êtes prêt à assumer la responsabilité de garantir les contraintes de clé unique et l'intégrité référentielle.
Vous ne voyez pas d'inconvénient à devoir concevoir la structure des données en utilisant des clés de tri et des clés de distance pour obtenir les meilleures performances de votre entrepôt de données.
Votre charge de travail nécessite beaucoup de traitement de colonnes et le nombre de colonnes est de l'ordre de plusieurs centaines ou milliers.
Quand utiliser PostgreSQL ?
Votre principal cas d'utilisation est le traitement des transactions en ligne et vous ne prévoyez pas de charge de travail analytique ou de reporting élevée.
Le volume de données est en TBs et une forte augmentation des données à traiter n'est pas prévue dans un futur proche.
Vous tenez à ce que vos données restent à l'intérieur de votre réseau, sous votre contrôle.
Vous disposez de suffisamment de ressources pour maintenir une base de données hautement disponible et fiable.
Vos requêtes sont plus simples et n'ont pas de très grandes plages de balayage de données.
Votre charge de travail porte principalement sur des lignes complètes et le nombre de colonnes dans vos tables ne se compte pas en centaines ou en milliers.
Conclusion
La décision finale d'opter pour Redshift ou PostgresSQL dépend entièrement de vos besoins professionnels uniques.
Lorsque vous essayez de choisir la meilleure option pour vous et vos besoins, tenez compte des points suivants :
Choisissez Redshift lorsque votre volume de données peut atteindre des pétaoctets, votre charge de travail est principalement analytique et nécessite beaucoup de traitement de colonnes.
Choisissez Postgres lorsque votre volume de données se compte en téraoctets (et que vous ne prévoyez pas une forte augmentation des données dans un avenir proche), que vous souhaitez que vos données restent dans votre réseau et que votre objectif principal est le traitement des transactions.