MariaDB est un système de gestion de bases de données relationnelles (SGBDR). Il s'agit d'un fork de MySQL, c'est-à-dire d'une solution développée à partir de son code source.

  • Moteurs de stockage : Aria, ColumnStore, MyRocks, InnoDB, MyISAM.
  • Entièrement distribué sous licence GPL, garantissant que toutes les versions sont open source et libres d'utilisation.

PostgreSQL est un autre système de gestion de bases de données relationnelles (SGBDR) open source, reconnu pour sa robustesse et sa richesse fonctionnelle.

Indexation

  • MySQL et MariaDB : support B-tree, Hash et autres types d'index.
  • PostgreSQL : prend en charge les index B-tree, Hash, GIN (Generalized Inverted Index), GiST (Generalized Search Tree), SP-GiST et BRIN (Block Range Indexes), avec une grande souplesse pour les cas d'utilisation complexes.

Cas d'utilisation

  • MySQL et MariaDB : applications web courantes, CMS comme WordPress, stack LAMP (Linux, Apache, MySQL, PHP/Perl/Python).
  • PostgreSQL : applications nécessitant des fonctionnalités avancées, des transactions complexes et une conformité stricte aux standards SQL.

Limites théoriques de MySQL

Taille maximale limitée par le système de fichiers ; les systèmes courants comme ext4 ont une limite de taille de fichier de 16 To.

  • Taille maximale d'une table : 64 To pour le moteur de stockage InnoDB.
  • Taille maximale d'un enregistrement : 64 Ko pour les lignes, mais des données plus volumineuses peuvent être stockées dans des colonnes BLOB ou TEXT.
  • Nombre maximal de colonnes par table : 1017 pour InnoDB.
  • Nombre maximal d'index par table : 64 pour InnoDB.

Limites théoriques de PostgreSQL

Taille maximale limitée par le système de fichiers et le matériel.

  • Taille maximale d'une table : 32 To.
  • Taille maximale d'un enregistrement : 1.6 To.
  • Nombre maximal de colonnes par table : 1600.

Calcul d'enregistrements

Estimation de la taille d'un enregistrement : pour chaque champ, on retient une taille moyenne. En MySQL, les types VARCHAR ajoutent 1 ou 2 octets pour stocker la longueur du champ ; dans l'exemple ci-dessous, 1 octet est retenu car les valeurs restent inférieures à 255 caractères. Les autres types de données ont des tailles fixes.

Nom : 50 caractères          = 51 octets
Prénom : 50 caractères       = 51 octets
Adresse : 100 caractères     = 101 octets
Code Postal : 10 caractères  = 11 octets
Ville : 50 caractères        = 51 octets
Date de Naissance            = 3 octets (type DATE)
Numéro de Téléphone : 15     = 16 octets
Email : 50 caractères        = 51 octets

Taille d'un enregistrement = 51+51+101+11+51+3+16+51 = 335 octets

Population de la France : environ 68 millions de personnes.

Pour calculer la taille totale nécessaire au stockage, il suffit de multiplier la taille d'un enregistrement par le nombre d'individus :

Taille totale = 335 octets/enregistrement × 68 000 000 enregistrements
Taille totale = 22 780 000 000 octets

La taille nécessaire pour stocker les informations de l'ensemble de la population française, en supposant environ 335 octets par enregistrement, serait d'environ 21.2 Go. Cette estimation ne prend toutefois pas en compte l'espace supplémentaire requis pour les index, les surcharges de stockage et les autres métadonnées. Pour affiner l'évaluation :

  • Indexation : les index peuvent ajouter une surcharge significative. Avec une surcharge estimée à 50 %, cela ajouterait environ 10.6 Go.
  • Marge de sécurité : ajouter 10 % pour les métadonnées et les autres besoins de stockage.

En arrondissant, il est raisonnable de prévoir environ 34 Go de stockage ; ce volume tient sur une clé USB achetée 15 €. Pour la population mondiale, il faut compter environ 3.9 To.