Ç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.