SQLite vs MySQL vs PostgreSQL: Une Comparaison des Systèmes de Gestion de Bases de Données Relationnelles

Introduction

Le modèle de données relationnelles, qui organise les données dans des tables de lignes et de colonnes, prédomine dans les outils de gestion de bases de données. Aujourd’hui, il existe d’autres modèles de données, notamment NoSQL et NewSQL, mais les systèmes de gestion de bases de données relationnelles (SGBDR) restent dominants pour le stockage et la gestion des données dans le monde entier.

Cet article compare et oppose trois des SGBDR open source les plus largement implémentés : SQLite, MySQL et PostgreSQL. Plus précisément, il explorera les types de données utilisés par chaque SGBDR, leurs avantages et leurs inconvénients et les situations où ils sont les mieux optimisés.

Un peu Sur les systèmes de gestion de bases de données

Les bases de données sont des clusters d’informations ou de données modélisés logiquement. Un système de gestion de base de données (SGBD), d’autre part, est un programme informatique qui interagit avec une base de données. Un SGBD vous permet de contrôler l’accès à une base de données, d’écrire des données, d’exécuter des requêtes et d’effectuer toute autre tâche liée à la gestion de la base de données. Bien que les systèmes de gestion de bases de données soient souvent appelés  » bases de données ”, les deux termes ne sont pas interchangeables. Une base de données peut être n’importe quelle collection de données, pas seulement celle stockée sur un ordinateur, tandis qu’un SGBD est le logiciel qui vous permet d’interagir avec une base de données.

Tous les systèmes de gestion de bases de données ont un modèle sous-jacent qui structure la façon dont les données sont stockées et consultées. Un système de gestion de base de données relationnelle est un SGBD qui utilise le modèle de données relationnelles. Dans ce modèle, les données sont organisées en tableaux, qui dans le contexte des SGBDR sont plus formellement appelés relations. Une relation est un ensemble de tuples ou de lignes dans une table, chaque tuple partageant un ensemble d’attributs ou de colonnes :

Exemple de diagramme montrant comment les relations, les tuples et les attributs se rapportent les uns aux autres

La plupart des bases de données relationnelles utilisent le langage de requête structuré (SQL) pour gérer et interroger les données. Cependant, de nombreux SGBDR utilisent leur propre dialecte particulier de SQL, qui peut avoir certaines limitations ou extensions. Ces extensions incluent généralement des fonctionnalités supplémentaires qui permettent aux utilisateurs d’effectuer des opérations plus complexes qu’ils ne le pourraient autrement avec SQL standard.

Remarque: Le terme « SQL standard” revient plusieurs fois tout au long de ce guide. Les normes SQL sont maintenues conjointement par l’American National Standards Institute (ANSI), l’Organisation Internationale de normalisation (ISO) et la Commission Électrotechnique Internationale (CEI). Chaque fois que cet article mentionne « SQL standard » ou « le standard SQL », il fait référence à la version actuelle du standard SQL publiée par ces organismes.

Il convient de noter que le standard SQL complet est volumineux et complexe : la conformité SQL:2011 complète nécessite 179 fonctionnalités. Pour cette raison, la plupart des SGBDR ne prennent pas en charge l’ensemble de la norme, bien que certains soient plus proches de la conformité totale que d’autres.

Chaque colonne se voit attribuer un type de données qui dicte le type d’entrées autorisées dans cette colonne. Différents SGBDR implémentent différents types de données, qui ne sont pas toujours directement interchangeables. Certains types de données courants incluent des dates, des chaînes, des entiers et des booléens.

Les types de données numériques peuvent être signés, ce qui signifie qu’ils peuvent représenter à la fois des nombres positifs et négatifs, ou non signés, ce qui signifie qu’ils ne peuvent représenter que des nombres positifs. Par exemple, le type de données tinyint de MySQL peut contenir 8 bits de données, ce qui équivaut à 256 valeurs possibles. La plage signée de ce type de données va de -128 à 127, tandis que la plage non signée va de 0 à 255.

Parfois, un administrateur de base de données impose une contrainte à une table pour limiter les valeurs qui peuvent y être entrées. Une contrainte s’applique généralement à une colonne particulière, mais certaines contraintes peuvent également s’appliquer à une table entière. Voici quelques contraintes couramment utilisées en SQL :

  • UNIQUE: L’application de cette contrainte à une colonne garantit qu’il n’y a pas deux entrées identiques dans cette colonne.
  • NOT NULL : Cette contrainte garantit qu’une colonne n’a aucune entrée NULL.
  • PRIMARY KEY : Une combinaison de UNIQUE et NOT NULL, la contrainte PRIMARY KEY garantit qu’aucune entrée dans la colonne n’est NULL et que chaque entrée est distincte.
  • FOREIGN KEY: Un FOREIGN KEY est une colonne d’une table qui fait référence au PRIMARY KEY d’une autre table. Cette contrainte est utilisée pour lier deux tables ensemble : les entrées de la colonne FOREIGN KEY doivent déjà exister dans la colonne PRIMARY KEY parent pour que le processus d’écriture réussisse.
  • CHECK : Cette contrainte limite la plage de valeurs pouvant être entrées dans une colonne. Par exemple, si votre application est destinée uniquement aux résidents de l’Alaska, vous pouvez ajouter une contrainte CHECK sur une colonne de code POSTAL pour n’autoriser que les entrées entre 99501 et 99950.

Si vous souhaitez en savoir plus sur les systèmes de gestion de bases de données, consultez notre article sur la compréhension des bases de données SQL et NoSQL et des différents modèles de bases de données.

Maintenant que nous avons couvert les systèmes de gestion de bases de données relationnelles en général, passons à la première des trois bases de données relationnelles open source que cet article couvrira: SQLite.

SQLite

SQLite est un SGBDR autonome, basé sur des fichiers et entièrement open source connu pour sa portabilité, sa fiabilité et ses performances élevées, même dans des environnements à faible mémoire. Ses transactions sont conformes à ACID, même dans les cas où le système tombe en panne ou subit une panne de courant.

Le site Web du projet SQLite le décrit comme une base de données ”sans serveur ». La plupart des moteurs de base de données relationnelles sont implémentés comme un processus serveur dans lequel les programmes communiquent avec le serveur hôte via une communication interprocessus qui relaie les demandes. Avec SQLite, cependant, tout processus qui accède à la base de données lit et écrit directement dans le fichier disque de la base de données. Cela simplifie le processus de configuration de SQLite, car il élimine tout besoin de configurer un processus serveur. De même, aucune configuration n’est nécessaire pour les programmes qui utiliseront la base de données SQLite: tout ce dont ils ont besoin est d’accéder au disque.

SQLite est un logiciel libre et open source, et aucune licence spéciale n’est requise pour l’utiliser. Cependant, le projet offre plusieurs extensions – chacune moyennant des frais uniques – qui aident à la compression et au cryptage. De plus, le projet propose divers forfaits de soutien commercial, chacun moyennant des frais annuels.

Les types de données pris en charge par SQLite

SQLite permet une variété de types de données, organisés dans les classes de stockage suivantes:

Type de données Explication
null Inclut toutes les valeurs NULL.
integer Entiers signés, stockés dans 1, 2, 3, 4, 6, ou 8 octets selon l’amplitude de la valeur.
real Nombres réels, ou valeurs à virgule flottante, stockés sous forme de nombres à virgule flottante sur 8 octets.
text Chaînes de texte stockées à l’aide de l’encodage de la base de données, qui peut être UTF-8, UTF-16BE ou UTF-16LE.
blob Tout blob de données, chaque blob étant stocké exactement tel qu’il a été entré.

Dans le contexte de SQLite, les termes ”classe de stockage » et ”type de données » sont considérés comme interchangeables. Si vous souhaitez en savoir plus sur les types de données de SQLite et l’affinité de type SQLite, consultez la documentation officielle de SQLite sur le sujet.

Avantages de SQLite

  • Faible encombrement: Comme son nom l’indique, la bibliothèque SQLite est très légère. Bien que l’espace qu’il utilise varie en fonction du système où il est installé, il peut prendre moins de 600 Ko d’espace. De plus, il est entièrement autonome, ce qui signifie qu’il n’y a aucune dépendance externe que vous devez installer sur votre système pour que SQLite fonctionne.
  • Convivial: SQLite est parfois décrit comme une base de données ”à configuration nulle » prête à l’emploi. SQLite ne fonctionne pas en tant que processus serveur, ce qui signifie qu’il n’a jamais besoin d’être arrêté, démarré ou redémarré et ne contient aucun fichier de configuration à gérer. Ces fonctionnalités aident à rationaliser le chemin depuis l’installation de SQLite jusqu’à son intégration à une application.
  • Portable: Contrairement à d’autres systèmes de gestion de bases de données, qui stockent généralement les données sous la forme d’un grand lot de fichiers séparés, une base de données SQLite entière est stockée dans un seul fichier. Ce fichier peut être situé n’importe où dans une hiérarchie de répertoires et peut être partagé via un support amovible ou un protocole de transfert de fichiers.

Inconvénients de SQLite

  • Concurrence limitée: Bien que plusieurs processus puissent accéder et interroger une base de données SQLite en même temps, un seul processus peut apporter des modifications à la base de données à un moment donné. Cela signifie que SQLite prend en charge une plus grande concurrence que la plupart des autres systèmes de gestion de bases de données embarqués, mais pas autant que les SGBDR client / serveur comme MySQL ou PostgreSQL.
  • Pas de gestion des utilisateurs : Les systèmes de base de données prennent souvent en charge les utilisateurs ou gèrent des connexions avec des privilèges d’accès prédéfinis à la base de données et aux tables. Étant donné que SQLite lit et écrit directement dans un fichier disque ordinaire, les seules autorisations d’accès applicables sont les autorisations d’accès typiques du système d’exploitation sous-jacent. Cela fait de SQLite un mauvais choix pour les applications qui nécessitent plusieurs utilisateurs avec des autorisations d’accès spéciales.
  • Sécurité : Un moteur de base de données qui utilise un serveur peut, dans certains cas, fournir une meilleure protection contre les bogues dans l’application cliente qu’une base de données sans serveur comme SQLite. Par exemple, les pointeurs errants dans un client ne peuvent pas corrompre la mémoire sur le serveur. De plus, comme un serveur est un processus persistant unique, une base de données client-serveur peut contrôler l’accès aux données avec plus de précision qu’une base de données sans serveur, ce qui permet un verrouillage plus fin et une meilleure concurrence.

Quand utiliser SQLite

  • Applications embarquées: SQLite est un excellent choix de base de données pour les applications nécessitant une portabilité et ne nécessitant pas d’extension future. Les exemples incluent les applications locales mono-utilisateur et les applications ou jeux mobiles.
  • Remplacement de l’accès au disque: Dans les cas où une application doit lire et écrire directement des fichiers sur le disque, il peut être avantageux d’utiliser SQLite pour les fonctionnalités supplémentaires et la simplicité associées à l’utilisation de SQL.
  • Test: Pour de nombreuses applications, il peut être exagéré de tester leurs fonctionnalités avec un SGBD qui utilise un processus serveur supplémentaire. SQLite dispose d’un mode en mémoire qui peut être utilisé pour exécuter des tests rapidement sans la surcharge des opérations de base de données réelles, ce qui en fait un choix idéal pour les tests.

Quand Ne pas utiliser SQLite

  • Travailler avec beaucoup de données: SQLite peut techniquement prendre en charge une base de données d’une taille allant jusqu’à 140 To, à condition que le lecteur de disque et le système de fichiers prennent également en charge les exigences de taille de la base de données. Cependant, le site Web SQLite recommande que toute base de données approchant 1 To soit hébergée sur une base de données client-serveur centralisée, car une base de données SQLite de cette taille ou plus serait difficile à gérer.
  • Volumes d’écriture élevés: SQLite ne permet qu’une seule opération d’écriture à un moment donné, ce qui limite considérablement son débit. Si votre application nécessite de nombreuses opérations d’écriture ou plusieurs rédacteurs simultanés, SQLite peut ne pas répondre à vos besoins.
  • L’accès au réseau est requis: Comme SQLite est une base de données sans serveur, elle ne fournit pas d’accès réseau direct à ses données. Cet accès est intégré à l’application, donc si les données de SQLite se trouvent sur une machine distincte de l’application, il faudra une liaison moteur-disque à bande passante élevée sur le réseau. C’est une solution coûteuse et inefficace, et dans de tels cas, un SGBD client-serveur peut être un meilleur choix.

MySQL

Selon le classement DB-Engines, MySQL est le SGBDR open source le plus populaire depuis que le site a commencé à suivre la popularité de la base de données en 2012. C’est un produit riche en fonctionnalités qui alimente de nombreux sites Web et applications parmi les plus importants au monde, notamment Twitter, Facebook, Netflix et Spotify. La mise en route de MySQL est relativement simple, en grande partie grâce à sa documentation exhaustive et à sa vaste communauté de développeurs, ainsi qu’à l’abondance de ressources liées à MySQL en ligne.

MySQL a été conçu pour la vitesse et la fiabilité, au détriment de l’adhésion totale au SQL standard. Les développeurs MySQL travaillent continuellement à une adhésion plus étroite au SQL standard, mais il est toujours en retard sur les autres implémentations SQL. Il est cependant livré avec divers modes et extensions SQL qui le rapprochent de la conformité. Contrairement aux applications utilisant SQLite, les applications utilisant une base de données MySQL y accèdent via un processus démon distinct. Parce que le processus serveur se situe entre la base de données et d’autres applications, il permet un plus grand contrôle sur qui a accès à la base de données.

MySQL a inspiré une multitude d’applications tierces, d’outils et de bibliothèques intégrées qui étendent ses fonctionnalités et facilitent son utilisation. Certains de ces outils tiers les plus utilisés sont phpMyAdmin, DBeaver et HeidiSQL.

Types de données pris en charge par MySQL

Les types de données de MySQL peuvent être organisés en trois grandes catégories: les types numériques, les types de date et d’heure et les types de chaîne.

Types numériques:

Type de données Explication
tinyint Un entier très petit. La plage signée pour ce type de données numériques est comprise entre -128 et 127, tandis que la plage non signée est comprise entre 0 et 255.
smallint Un petit entier. La plage signée pour ce type numérique est de -32768 à 32767, tandis que la plage non signée est de 0 à 65535.
mediumint Un entier de taille moyenne. La plage signée pour ce type de données numériques est comprise entre -8388608 et 8388607, tandis que la plage non signée est comprise entre 0 et 16777215.
int ou integer Un entier de taille normale. La plage signée pour ce type de données numériques est de -2147483648 à 2147483647, tandis que la plage non signée est de 0 à 4294967295.
bigint Un grand entier. La plage signée pour ce type de données numériques est de -9223372036854775808 à 9223372036854775807, tandis que la plage non signée est de 0 à 18446744073709551615.
float Un petit nombre à virgule flottante (d’une seule précision).
doubledouble precision, ou real Un nombre à virgule flottante de taille normale (double précision).
decdecimalfixed, ou numeric Un nombre à point fixe emballé. La longueur d’affichage des entrées pour ce type de données est définie lors de la création de la colonne et chaque entrée adhère à cette longueur.
bool ou boolean Un booléen est un type de données qui n’a que deux valeurs possibles, généralement soit true ou false .
bit Un type de valeur de bits pour lequel vous pouvez spécifier le nombre de bits par valeur, de 1 à 64.

Types de date et d’heure:

Data Type Explanation
date A date, represented as YYYY-MM-DD.
datetime A timestamp showing the date and time, displayed as YYYY-MM-DD HH:MM:SS.
timestamp A timestamp indicating the amount of time since the Unix epoch (00:00:00 on January 1, 1970).
time A time of day, displayed as HH:MM:SS.
year A year expressed in either a 2 or 4 digit format, with 4 digits being the default.

String types:

Data Type Explanation
char A fixed-length string; les entrées de ce type sont rembourrées à droite avec des espaces pour respecter la longueur spécifiée lorsqu’elles sont stockées.
varchar Une chaîne de longueur variable.
binary Similaire au type char, mais une chaîne d’octets binaires d’une longueur spécifiée plutôt qu’une chaîne de caractères non binaires.
varbinary Similaire au type varchar, mais une chaîne d’octets binaires de longueur variable plutôt qu’une chaîne de caractères non binaires.
blob A binary string with a maximum length of 65535 (2^16 – 1) bytes of data.
tinyblob A blob column with a maximum length of 255 (2^8 – 1) bytes of data.
mediumblob A blob column with a maximum length of 16777215 (2^24 – 1) bytes of data.
longblob A blob column with a maximum length of 4294967295 (2^32 – 1) bytes of data.
text A string with a maximum length of 65535 (2^16 – 1) characters.
tinytext A text column with a maximum length of 255 (2^8 – 1) characters.
mediumtext A text column with a maximum length of 16777215 (2^24 – 1) characters.
longtext A text column with a maximum length of 4294967295 (2^32 – 1) characters.
enum Une énumération, qui est un objet chaîne qui prend une seule valeur d’une liste de valeurs déclarées lors de la création de la table.
set Semblable à une énumération, un objet chaîne qui peut avoir zéro ou plusieurs valeurs, dont chacune doit être choisie dans une liste de valeurs autorisées spécifiées lors de la création de la table.

Avantages de MySQL

  • Popularité et facilité d’utilisation: En tant que l’un des systèmes de base de données les plus populaires au monde, les administrateurs de base de données qui ont de l’expérience avec MySQL ne manquent pas. De même, il existe une abondance de documentation imprimée et en ligne sur la façon d’installer et de gérer une base de données MySQL, ainsi qu’un certain nombre d’outils tiers – tels que phpMyAdmin — qui visent à simplifier le processus de démarrage de la base de données.
  • Sécurité: MySQL est installé avec un script qui vous aide à améliorer la sécurité de votre base de données en définissant le niveau de sécurité du mot de passe de l’installation, en définissant un mot de passe pour l’utilisateur root, en supprimant les comptes anonymes et en supprimant les bases de données de test qui sont, par défaut, accessibles à tous les utilisateurs. De plus, contrairement à SQLite, MySQL prend en charge la gestion des utilisateurs et vous permet d’accorder des privilèges d’accès utilisateur par utilisateur.
  • Vitesse : En choisissant de ne pas implémenter certaines fonctionnalités de SQL, les développeurs MySQL ont pu prioriser la vitesse. Alors que des tests de référence plus récents montrent que d’autres SGBDR comme PostgreSQL peuvent correspondre ou au moins se rapprocher de MySQL en termes de vitesse, MySQL a toujours la réputation d’être une solution de base de données extrêmement rapide.
  • Réplication : MySQL prend en charge différents types de réplication, qui consiste à partager des informations entre deux hôtes ou plus pour améliorer la fiabilité, la disponibilité et la tolérance aux pannes. Ceci est utile pour configurer une solution de sauvegarde de base de données ou pour mettre à l’échelle horizontalement sa base de données.

Inconvénients de MySQL

  • Limitations connues: Étant donné que MySQL a été conçu pour la vitesse et la facilité d’utilisation plutôt que pour une conformité SQL complète, il est livré avec certaines limitations fonctionnelles. Par exemple, il ne prend pas en charge les clauses FULL JOIN.
  • Licences et fonctionnalités propriétaires: MySQL est un logiciel à double licence, avec une édition communautaire gratuite et open source sous licence GPLv2 et plusieurs éditions commerciales payantes publiées sous licence propriétaire. Pour cette raison, certaines fonctionnalités et plugins ne sont disponibles que pour les éditions propriétaires.
  • Développement ralenti: Depuis que le projet MySQL a été acquis par Sun Microsystems en 2008, puis par Oracle Corporation en 2009, des utilisateurs se sont plaints que le processus de développement du SGBD avait considérablement ralenti, la communauté n’ayant plus l’agence pour réagir rapidement aux problèmes et mettre en œuvre des changements.

Quand utiliser MySQL

  • Opérations distribuées: La prise en charge de la réplication de MySQL en fait un excellent choix pour les configurations de bases de données distribuées telles que les architectures primaire-secondaire ou primaire-primaire.
  • Sites web et applications web: MySQL alimente de nombreux sites Web et applications sur Internet. C’est en grande partie grâce à la facilité d’installation et de configuration d’une base de données MySQL, ainsi qu’à sa vitesse globale et à son évolutivité à long terme.
  • Croissance future attendue: La prise en charge de la réplication de MySQL peut aider à faciliter la mise à l’échelle horizontale. De plus, il s’agit d’un processus relativement simple pour passer à un produit MySQL commercial, comme MySQL Cluster, qui prend en charge le sharding automatique, un autre processus de mise à l’échelle horizontale.

Quand Ne Pas Utiliser MySQL

  • La conformité SQL est nécessaire: Étant donné que MySQL n’essaie pas d’implémenter la norme SQL complète, cet outil n’est pas complètement compatible SQL. Si la conformité SQL complète ou même quasi-complète est un must pour votre cas d’utilisation, vous voudrez peut-être utiliser un SGBD plus entièrement conforme.
  • Concurrence et volumes de données importants: Bien que MySQL fonctionne généralement bien avec des opérations lourdes en lecture, les lectures-écritures simultanées peuvent être problématiques. Si votre application aura de nombreux utilisateurs qui y écrivent des données à la fois, un autre SGBDR comme PostgreSQL pourrait être un meilleur choix de base de données.

PostgreSQL

PostgreSQL, également connu sous le nom de Postgres, se présente comme « la base de données relationnelle open source la plus avancée au monde. »Il a été créé dans le but d’être hautement extensible et conforme aux normes. PostgreSQL est une base de données objet-relationnelle, ce qui signifie que bien qu’il s’agisse principalement d’une base de données relationnelle, elle inclut également des fonctionnalités — comme l’héritage de table et la surcharge de fonctions — qui sont plus souvent associées à des bases de données objets.

Postgres est capable de gérer efficacement plusieurs tâches en même temps, une caractéristique connue sous le nom de concurrence. Il y parvient sans verrous de lecture grâce à sa mise en œuvre du contrôle de la concurrence Multiversion (MVCC), qui assure l’atomicité, la cohérence, l’isolation et la durabilité de ses transactions, également connu sous le nom de conformité ACIDE.

PostgreSQL n’est pas aussi largement utilisé que MySQL, mais il existe encore un certain nombre d’outils et de bibliothèques tiers conçus pour simplifier le travail avec PostgreSQL, y compris pgAdmin et Postbird.

Types de données pris en charge par PostgreSQL

PostgreSQL prend en charge les types de données numériques, de chaîne et de date et d’heure comme MySQL. En outre, il prend en charge les types de données pour les formes géométriques, les adresses réseau, les chaînes de bits, les recherches de texte et les entrées JSON, ainsi que plusieurs types de données idiosyncratiques.

Types numériques:

Type de données Explication
bigint Un entier signé de 8 octets.
bigserial An autoincrementing 8 byte integer.
double precision An 8 byte double precision floating-point number.
integer A signed 4 byte integer.
numeric or decimal An number of selectable precision, recommended for use in cases where exactness is crucial, such as monetary amounts.
real A 4 byte single precision floating-point number.
smallint A signed 2 byte integer.
smallserial An autoincrementing 2 byte integer.
serial An autoincrementing 4 byte integer.

Character types:

Data Type Explanation
character A character string with a specified fixed length.
character varying or varchar A character string with a variable but limited length.
text A character string of a variable, unlimited length.

Date and time types:

Data Type Explanation
date A calendar date consisting of the day, month, and year.
interval A time span.
time or time without time zone A time of day, not including the time zone.
time with time zone A time of day, including the time zone.
timestamp or timestamp without time zone A date and time, not including the time zone.
timestamp with time zone A date and time, including the time zone.

Geometric types:

Data Type Explanation
box A rectangular box on a plane.
circle A circle on a plane.
line An infinite line on a plane.
lseg A line segment on a plane.
path A geometric path on a plane.
point A geometric point on a plane.
polygon A closed geometric path on a plane.

Network address types:

Data Type Explanation
cidr An IPv4 or IPv6 network address.
inet An IPv4 or IPv6 host address.
macaddr A Media Access Control (MAC) address.

Bit string types:

Data Type Explanation
bit A fixed-length bit string.
bit varying A variable-length bit string.

Text search types:

Data Type Explanation
tsquery A text search query.
tsvector A text search document.

JSON types:

Data Type Explanation
json Textual JSON data.
jsonb Decomposed binary JSON data.

Other data types:

Data Type Explanation
boolean A logical Boolean, representing either true or false.
bytea Short for « byte array”, this type is used for binary data.
money An amount of currency.
pg_lsn A PostgreSQL Log Sequence Number.
txid_snapshot A user-level transaction ID snapshot.
uuid A universally unique identifier.
xml XML data.

Advantages of PostgreSQL

  • SQL compliance: More so than SQLite or MySQL, PostgreSQL aims to closely adhere to SQL standards. According to the official PostgreSQL documentation, PostgreSQL supports 160 out of the 179 features required for full core SQL:conformité 2011, en plus d’une longue liste de fonctionnalités optionnelles.
  • Open-source et axé sur la communauté : Projet entièrement open-source, le code source de PostgreSQL est développé par une communauté nombreuse et dévouée. De même, la communauté Postgres gère et contribue à de nombreuses ressources en ligne qui décrivent comment travailler avec le SGBD, y compris la documentation officielle, le wiki PostgreSQL et divers forums en ligne.
  • Extensible : Les utilisateurs peuvent étendre PostgreSQL par programmation et à la volée grâce à son fonctionnement piloté par catalogue et à son utilisation du chargement dynamique. On peut désigner un fichier de code objet, comme une bibliothèque partagée, et PostgreSQL le chargera si nécessaire.

Inconvénients de PostgreSQL

  • Performances de la mémoire : Pour chaque nouvelle connexion client, PostgreSQL forks un nouveau processus. Chaque nouveau processus se voit allouer environ 10 Mo de mémoire, ce qui peut s’additionner rapidement pour les bases de données avec beaucoup de connexions. En conséquence, pour des opérations simples et lourdes en lecture, PostgreSQL est généralement moins performant que d’autres SGBDR, comme MySQL.
  • Popularité: Bien que plus largement utilisé ces dernières années, PostgreSQL était historiquement à la traîne de MySQL en termes de popularité. Une conséquence de ceci est qu’il y a encore moins d’outils tiers qui peuvent aider à gérer une base de données PostgreSQL. De même, il n’y a pas autant d’administrateurs de base de données ayant une expérience dans la gestion d’une base de données Postgres que ceux ayant une expérience MySQL.

Quand utiliser PostgreSQL

  • L’intégrité des données est importante: PostgreSQL est entièrement conforme à ACID depuis 2001 et implémente le contrôle des devises multiversion pour garantir la cohérence des données, ce qui en fait un choix judicieux de SGBDR lorsque l’intégrité des données est critique.
  • Intégration avec d’autres outils : PostgreSQL est compatible avec un large éventail de langages de programmation et de plates-formes. Cela signifie que si jamais vous avez besoin de migrer votre base de données vers un autre système d’exploitation ou de l’intégrer à un outil spécifique, ce sera probablement plus facile avec une base de données PostgreSQL qu’avec un autre SGBD.
  • Opérations complexes: Postgres prend en charge les plans de requête qui peuvent tirer parti de plusieurs processeurs afin de répondre aux requêtes plus rapidement. Ceci, associé à sa prise en charge de plusieurs rédacteurs simultanés, en fait un excellent choix pour les opérations complexes telles que l’entreposage de données et le traitement des transactions en ligne.

Quand Ne pas Utiliser PostgreSQL

  • La vitesse est impérative : Au détriment de la vitesse, PostgreSQL a été conçu pour l’extensibilité et la compatibilité. Si votre projet nécessite les opérations de lecture les plus rapides possibles, PostgreSQL n’est peut-être pas le meilleur choix de SGBD.
  • Configurations simples: En raison de son grand ensemble de fonctionnalités et de sa forte adhésion au SQL standard, Postgres peut être exagéré pour des configurations de base de données simples. Pour les opérations lourdes en lecture où la vitesse est requise, MySQL est généralement un choix plus pratique.
  • Réplication complexe : Bien que PostgreSQL fournisse un support solide pour la réplication, c’est encore une fonctionnalité relativement nouvelle et certaines configurations — comme une architecture primaire-primaire — ne sont possibles qu’avec des extensions. La réplication est une fonctionnalité plus mature sur MySQL et de nombreux utilisateurs considèrent que la réplication de MySQL est plus facile à implémenter, en particulier pour ceux qui n’ont pas l’expérience requise en matière d’administration de base de données et de système.

Conclusion

Aujourd’hui, SQLite, MySQL et PostgreSQL sont les trois systèmes de gestion de bases de données relationnelles open source les plus populaires au monde. Chacun a ses propres caractéristiques et limites, et excelle dans des scénarios particuliers. Il y a pas mal de variables en jeu lors du choix d’un SGBDR, et le choix est rarement aussi simple que de choisir le plus rapide ou celui avec le plus de fonctionnalités. La prochaine fois que vous aurez besoin d’une solution de base de données relationnelle, assurez-vous de rechercher ces outils et d’autres en profondeur pour trouver celui qui convient le mieux à vos besoins.

Si vous souhaitez en savoir plus sur SQL et comment l’utiliser pour gérer une base de données relationnelle, nous vous encourageons à consulter notre feuille de triche Comment gérer une base de données SQL. D’un autre côté, si vous souhaitez en savoir plus sur les bases de données non relationnelles (ou NoSQL), consultez notre Comparaison des Systèmes de Gestion de Bases de données NoSQL.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.