Dans PostgreSQL, tout n'est pas parfait

Suite a mon dernier post, vous pourriez être emmener a penser que Postgresql est parfait, hé bien non, malheureusement Postgresql souffre de nombreux défauts (en comparaison avec Mysql ici par exemplel) en voici quelques uns :

  • Pas de réplication Native: Avec Postgresql vous devez aller utiliser des contributions pour pouvoir faire un système de réplication avec Postgresql, ceux ci sont généralement peut performant (iSlony par exemple), alors que par exemple Mysql support plusieurs système de réplication nativement (Master/Slave via Log Shipping, et Cluster avec Mysql Cluster (Cependant avec Mysql Cluster, toute la base de donnée doit tenir en mémoire il me semble, donc pas utilisable pour les grosses bases)) (Cependant il parrait que quelque chose est prévu pour la version 8.5, Pour le moment seul un mode Warm Standby est disponible sous Postgresql (cela permet juste d’avoir un serveur de secours au cas ou le master tombe, mais impossible de s’y connecter tant que le master fonctionne encore)
  • Pas de partitionnement des tables: Il est possible d’implémenter un système de partitionnement via des triggers ou des rules, mais c’est moche et ca rend la maintenance très complexe, alors qu’une grande partie des autres bases de données ont un support natif du partitionnement (Même Mysql…)
  • Pas de support technique: Comme Postgresql est un projet Open-source, il n’y a aucune grosse entreprise derrière pour contrôler le projet et fournir un support ou des outils, tout doit passer par la communauté, et les grosses entreprises a la recherche d’une base de données avec support comprit n’aiment pas forcement ça….
  • Pauvreté des outils: On trouve très peut d’outils pour Postgresql pour la gestion et le monitoring des bases de données, par exemple impossible de trouver un équivalent de l’excellent Mysql Entreprise Monitor qui permet de surveiller un cluster complet
  • Pas de cache de requêtes: Bon ça c’est une généralité bien sympa de Mysql, les requêtes identiques sont mises en cache, c’est assez pratique pour bien booster les performances au niveau des requêtes répétitives, cependant ce n’est pas indispensable si le cache est bien géré sur le site web (si utilisé avec un site web)
  • Pas de planificateur de taches natif: La ou beaucoup de bases de données (Mysql, MSSQL, Oracle) fournissent un planificateur de tache qui permet d’exécuter a intervalle régulier des requêtes SQL ou des procédures stockées, Postgresql n’a rien de natif, il me semble qu’il y a un projet de planificateur de tache pour Postgresql lié a pgAdmin, mais je n’en ai rarement entendu parler..
  • Pas de REPLACE/MERGE , C’est toujours un plus qui permet d’économiser une requête et donc d’augmenter les performances.

Donc voila, ce sont les choses qui serons surement amélioré dans les prochaines versions, donc pour ceux qui veulent savoir, NON je ne déteste pas Mysql, c’est un RDBMS bien sympa avec Postgresql, mais chacun ont leurs avantages et leurs inconvenants (et oui généralement je préfère Postgresql).

A ma connaissance, les deux peuvent supporter une haute volumétrie, la plus grosse base de données Postgresql que je connaissent fait environ 2Po (2.000.000 Go, 2000To) et est chez Yahoo, mais on sais aussi que Facebook tourne sous Mysql… :)

A vos commentaires ;)

Categorie: Informatique -> Administration
Créé il y a 1 an (le jeudi 27 août 2009 à 18:27).
Dernière modification il y a 9 mois, 1 semaine (le samedi 28 novembre 2009 à 14:19) par kedare (Mathieu POUSSIN).
Commentaires
4 commentaires
#18 Posté par Titouille56 le vendredi 28 août 2009 à 15:14

Facebook sous MySql ? Etonnant. Vu la masse d'informations qu'ils doivent traiter, je pensait qu'ils seraient sous PostgreSql justement.

#19 Posté par Kedare (Mathieu POUSSIN) le vendredi 28 août 2009 à 16:05

Oui Facebook tourne sous Mysql (une version modifiée je crois):
http://www.haute-disponibilite.net/20...

#21 Posté par VLDG le mardi 29 décembre 2009 à 22:54

Le REPLACE n'a guère d'intérêt et peut créer de gros problèmes : Ce n'est pas très relationnel de supprimer un enregistrement pour le mettre à jour !
Imagine un REPLACE sur une table avec des delete cascade : il vaut mieux utiliser un update or insert on duplicate key...
Quand au support de PostgreSQL : je pense qu'il est tout aussi bien que celui de MySQL.

#24 Posté par Kedare le jeudi 31 décembre 2009 à 17:54

Hmm, pour le REPLACE, on ne parle pas de supprimer un enregistrement, mais de le créer ou si c'est pas possible car il existe déjà, de le mettre a jour, par exemple ca pourrait me servir pour un de mes bots IRC pour mettre a jour la date de la dernière activité d'un utilisateur et de le créer si il n'existe pas au lieu de devoir en premier verifier avec un SELECT, c'est un exemple ;)

Ajouter un commentaire






Mode texte brut, Le HTML n'est pas autorisé, les retours a la lignes sont automatiquement convertis en html.