To content | To menu | To search


All your base are belong to us

Ça faisait longtemps que j'avais envie d'écrire un article en mode semi-troll sur « pourquoi MariaDB c'est mieux que PostgreSQL ». Semi-troll parce qu'il faut bien un peu de mauvaise foi, mais en même temps je trouve qu'on casse un peu trop de sucre sur MySQL/MariaDB, et qu'on se gargarise un peu trop du côté "sérieux" de PostgreSQL. Et pour les vrais trolls (voir mensonges purs et simples) sur MariaDB/MySQL, je laisse ça à d'autres.

C'est parti, sans ordre particulier.

Réplication

Quand MySQL et MariaDB font du multi-master en réplication asynchrone à l'aise depuis des années, voir du vrai cluster avec Galera, PostgreSQL n'en est capable — en théorie — que depuis sa toute dernière version. Avant, sans solution externe c'était uniquement du primaire/secondaire. Avec un secondaire en lecture seule.

Sous PostgreSQL, la réplication entre deux versions majeures différentes n'est pas possible. Pire, même une mise à jour vers une version mineure du secondaire suffit à péter la réplication (ça m'est encore arrivé pas plus tard que toute à l'heure). Pas de soucis dans le camp d'en face, il est même possible de se servir de la réplication pour faire une upgrade sans interruption de service.

La réplication PostgreSQL est tellement fragile que j'ai fini par faire un script pour la remettre en place. Sous MariaDB, hormis un sordide problème de binaires, mes derniers souvenirs de conflits de clés dupliquées remontent à de nombreuses années.

Mise à jour

Il n'est pas possible de conserver sa base de données entre deux versions majeures de PostgreSQL : il faut soit faire un dump puis restaurer la base de données entière, soit passer par les commandes d'upgrade qui nécessitent d'avoir les binaires des deux versions installées (#pratique). Sous FreeBSD, c'est un bordel sans nom.

Pour MySQL ou MariaDB, il suffit de mettre à jour les paquets, relancer le service, et éventuellement lancer mysql_upgrade ou mariadb-upgrade (dans le cas de MySQL, depuis la version 8.0.16 ça ne sert même plus à rien)

Clients en ligne de commande

Je connais par cœur les commandes SQL de base, je peux sélectionner une base, vérifier les requêtes ou l'état de la réplication les yeux fermés avec MariaDB. Sous PostgreSQL, je n'arrive toujours pas retenir les \c, \dn et autres \dt servant respectivement à se connecter à une base, à lister les schémas et les tables...

Gestion des droits

Sous PostgreSQL, il faut jongler entre les utilisateurs, les rôles, l'héritage, les droits définis par le fichier pg_hba.conf, et ça se complique encore plus si on utilise un connection pooler.

Sous MariaDB, c'est une entrée avec login:mdp@ip_source et des droits sur une ou des bases et une ou des tables. Simple, basique.

Backups

Rien qu'avec l'outil de backup fourni par PostgreSQL, la restauration dépend de la façon dont les dumps ont été faits (SQL, custom...) qu'il faut donc connaître. Avec MariaDB, de base, une seule manière de faire des dumps, et une restauration en rejouant les requêtes. Simple, basique.

Merci pour le poisson

Voila, sans rancune aucune. Je continue d'utiliser les deux produits, aussi bien en pro qu'en perso. Tout est loin d'être rose du côté de MariaDB et Oracle MySQL non plus, il y aurait aussi beaucoup à en dire. Juste...ça marche pas si mal que ça. Et c'est souvent beaucoup, beaucoup plus simple qu'avec Postgres.

Billets connexes

Add a comment

Comments can be formatted using a simple wiki syntax.

This post's comments feed