Aller au contenu principal

PostgreSQL plutôt que MySQL

Nous préconisons PostgreSQL pour du RDBMS. Cette base de données est orientée objets, ce qui permet de pousser un peu plus loin les contraintes sur les formats de données contrairement à une MySQL/MariaDB.

À titre d'exemples comme MySQL n'est pas nativement orienté objets :

  • Il a fallu attendre MySQL v8 en 2018 pour enfin supporter les ENUM (sachant que MySQL est sorti en 1995) ;
  • La gestion d'une colonne en uuid n'est pas native :
    • Si vous voulez que ce soit lisible n'importe quand pour un humain il faut forcer le type à string… mais du coup ce n'est pas optimisé en stockage et pour les jointures ;
    • Si vous voulez optimiser la taille vous devez définir le type BINARY(16) mais au moment de faire vos SELECT vous ne verrez rien de lisible. Pour ça il faut préciser le helper BIN_TO_UUID() à chaque endroit où il y a vos UUIDs, et UUID_TO_BIN() au moment de vos INSERT. Économisez votre temps… utilisez PostgreSQL ;
  • Vous ne pouvez pas créer de "custom type" où vous définiriez vous-même la structure de données attendue.

Cela peut vous paraître exagéré mais quand vous faites des migrations de données (car oui cela arrive), avoir une base qui sait un minimum ce qui peut ou ne peut pas être fait aide grandement. Surtout quand vous travaillez sur des Go de données.