# Système de gestion de base de données

Un système de gestion de base de données (abr. SGBD) est un logiciel système servant à stocker, à manipuler ou gérer, et à partager des données dans une base de données, en garantissant la qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité des opérations.
Un SGBD (en anglais DBMS pour database management system) permet d'inscrire, de retrouver, de modifier, de trier, de transformer ou d'imprimer les informations de la base de données. Il permet d'effectuer des comptes rendus des informations enregistrées et comporte des mécanismes pour assurer la cohérence des informations, éviter des pertes d'informations dues à des pannes, assurer la confidentialité et permettre son utilisation par d'autres logiciels. Selon le modèle implémenté, le SGBD peut comporter une simple interface graphique, une interface de commande, ou jusqu'à des langages de programmation sophistiqués.
Les systèmes de gestion de base de données sont des logiciels universels, indépendants de l'usage qui est fait des bases de données. Ils sont utilisés pour de nombreuses applications informatiques, notamment les guichets automatiques bancaires, les logiciels de réservation, les bibliothèques numériques, les logiciels d'inventaire, les progiciels de gestion intégrés ou la plupart des blogs et sites web. Il existe de nombreux systèmes de gestion de base de données. En 2008, Oracle détenait près de la moitié du marché des SGBD avec MySQL et Oracle Database. Vient ensuite IBM avec près de 20 %, laissant peu de place pour les autres acteurs.
Les SGBD sont souvent utilisés par d'autres logiciels, ainsi que les administrateurs ou les développeurs. Ils peuvent être sous forme de composant logiciel, de serveur, de logiciel applicatif ou d'environnement de programmation.
En 2011, la majorité des SGBD du marché manipulaient des bases de données relationnelles.

## But visé

Les SGBD sont les logiciels intermédiaires entre les utilisateurs et les bases de données. Une base de données est un magasin de données composé de plusieurs fichiers manipulés exclusivement par le SGBD. Ce dernier cache la complexité de manipulation des structures de la base de données en mettant à disposition une vue synthétique du contenu.
L'ensemble SGBD et base de données est destiné à permettre le stockage de données d'une manière offrant de nombreux avantages par rapport à un enregistrement conventionnel dans des fichiers. Il permet d'obtenir et de modifier rapidement des données, de les partager entre plusieurs usagers. Il garantit l'absence de redondance, l'intégrité, la confidentialité et la pérennité des données tout en donnant des moyens d'éviter les éventuels conflits de modification et en cachant les détails du format de fichier des bases de données.
Les données sont enregistrées sous forme de suites de bits représentant des lettres, des nombres, des couleurs, des formes…
Le SGBD comporte différents mécanismes destinés à retrouver rapidement les données et de les convertir en vue d'obtenir des informations qui aient un sens:
* à l'aide du SGBD, plusieurs usagers et plusieurs logiciels peuvent accéder simultanément aux données. Le SGBD effectue les vérifications pour assurer qu'aucune personne non autorisée n'ait accès à des données confidentielles contenues dans la base de données,. Il arbitre les collisions lorsqu'il y a plusieurs modifications simultanées de la même information. Il comporte des mécanismes afin d'éviter des pertes de données à la suite d'une panne ;
* la redondance désigne une situation de présence de plusieurs copies de la même donnée dont la modification peut amener à des incohérences se manifestant par des copies différentes. Le SGBD vérifie — voire refuse — la présence de redondances. Le SGBD effectue également sur demande des vérifications pour assurer que les données introduites soient correctes (valeurs dans les limites admises, format correct) et que les données soient cohérentes par rapport à ce qui se trouve déjà dans la base de données ;
* les données sont typiquement manipulées par un logiciel applicatif qui fait appel aux services du SGBD pour manipuler la base de données. Alors qu'un logiciel applicatif qui manipule un fichier tient compte du format de données de ce fichier, un logiciel qui manipule une base de données par l'intermédiaire d'un SGBD n'a pas connaissance du format de la base de données. Les données sont présentées par le SGBD sous une forme qui cache les détails du format des fichiers dans lesquels elles sont enregistrées.
Les SGBD contemporains sont des logiciels sophistiqués nécessitant du personnel hautement qualifié, et leur utilisation entraîne souvent une augmentation substantielle des coûts liés aux licences et à la formation.

## Fonctionnalités

Un SGBD permet d'enregistrer des données, puis de les rechercher, de les modifier et de créer automatiquement des comptes rendus (anglais report) du contenu de la base de données. Il permet de spécifier les types de données, la structure des données contenues dans la base de données, ainsi que des règles de cohérence telles que l'absence de redondance.
Les caractéristiques des données enregistrées dans la base de données, ainsi que les relations, les règles de cohérence et les listes de contrôle d'accès sont enregistrées dans un catalogue qui se trouve à l'intérieur de la base de données et manipulé par le SGBD.
Les opérations de recherche et de manipulation des données, ainsi que la définition de leurs caractéristiques, des règles de cohérence et des autorisations d'accès peuvent être exprimées sous forme de requêtes (anglais query) dans un langage informatique reconnu par le SGBD. SQL est le langage informatique le plus populaire$^,$, c'est un langage normalisé de manipulation des bases de données. Il existe de nombreux autres langages comme le Databasic de Charles Bachman, Dataflex, dBase ou xBaseScript, etc.
Les bases de données peuvent être d'une taille de plusieurs téraoctets ; une taille supérieure à la place disponible dans la mémoire centrale de l'ordinateur. Les bases de données sont enregistrées sur disque dur, ceux-ci ont une capacité supérieure, mais sont moins rapides, et le SGBD est équipé de mécanismes visant à accélérer les opérations. Les SGBD contemporains enregistrent non seulement les données, mais également leur description, des formulaires, la définition des comptes rendus, les règles de cohérence, des procédures ; ils permettent le stockage de vidéos et d'images. Le SGBD manipule les structures complexes nécessaires à la conservation de ces informations.
Les SGBD sont équipés de mécanismes qui effectuent des vérifications à l'insu de l'utilisateur, en vue d'assurer la réussite des transactions, éviter des problèmes dus aux accès concurrents et assurer la sécurité des données :
* transactions : une transaction est une opération unitaire qui transforme le contenu de la base de données d'un état A vers un état B. La transformation peut nécessiter plusieurs modifications du contenu de la base de données. Le SGBD évite qu'il existe des états intermédiaires entre A et B en garantissant que les modifications sont effectuées complètement ou pas du tout. En cas de panne survenue durant des opérations de modification de la base de données, le SGBD remet la base de données dans l'état ou elle était au début de la transaction (état A) ;
* concurrence : la base de données peut être manipulée simultanément par plusieurs personnes, et le contrôle de la concurrence vérifie que ces manipulations n'aboutissent pas à des incohérences. Par exemple dans un logiciel de réservation, le SGBD vérifie que chaque place est réservée au maximum par une personne, même si des réservations sont effectuées simultanément ;
* sécurité des données : le choix de permettre ou d'interdire l'accès à des données est donné par des listes de contrôle d'accès, et des mécanismes du SGBD empêchent des personnes non autorisées de lire ou de modifier des données pour lesquelles l'accès ne leur a pas été accordé.

## Typologie

Selon leur construction et les possibilités qu'ils offrent, les SGBD peuvent être dits hiérarchiques, en réseau, relationnels, orientés objet, objet-relationnels, XML/RDF ou mixtes :
* hiérarchique : une base de données hiérarchique est une base de données dont le système de gestion lie les enregistrements dans une structure arborescente où chaque enregistrement n'a qu'un seul possesseur. Elle a été utilisée dans les premiers systèmes de gestion de base de données de type mainframe et a été inventée par la NASA ;
* réseau : le modèle de base de données en réseau permet à chaque enregistrement d'avoir plusieurs enregistrements parents et enfants, formant ainsi une structure de graphe généralisée et offrant une modélisation plus naturelle des entités que le modèle relationnel. Ce modèle est parfois appelé modèle CODASYL, du nom de l'organisme de normalisation américain qui l'a standardisé à partir de 1969 ;
* relationnel : selon ce modèle, les données sont placées dans des tables avec lignes et colonnes et n'importe quelle donnée contenue dans la base de données peut être retrouvée à l'aide du nom de la table, du nom de la colonne et de la clé primaire. Le modèle relationnel est destiné à assurer l'indépendance des données et à offrir les moyens de contrôler la cohérence et d'éviter la redondance. Il permet de manipuler les données comme des ensembles en effectuant des opérations de la théorie des ensembles. Les règles de cohérence qui s'appliquent aux bases de données relationnelles sont l'absence de redondance ou de nul des clés primaires, et l'intégrité référentielle. En 2010, la majorité des SGBD sont de type relationnel : ils manipulent des bases de données conformément au modèle de données relationnel ;
* orienté objet et objet-relationnel : les SGBD orientés objet sont un sujet de recherche depuis 1980, lorsque sont apparus les premiers langages de programmation orientée objet. Ils sont destinés à offrir les fonctionnalités des SGBD à des langages orientés objet et permettre le stockage persistant des objets. Les objets sont manipulés en utilisant les possibilités natives des langages orientés objet et une interface de programmation permet d'exploiter les fonctionnalités du SGBD. Celui-ci est équipé des mécanismes nécessaires pour permettre l'utilisation des possibilités d'encapsulation, d'héritage et de polymorphisme des langages de programmation orientée objet$^,$. Les SGBD objet-relationnel offrent à la fois les possibilités des SGBD orientés objet et ceux des SGBD relationnels ;
* à base de XML ou RDF : une base de données XML Native (NXD en anglais) est une base de données qui s'appuie sur le modèle de données fourni par XML. Elle utilise typiquement des langages de requête XML comme XPath ou XQuery. Une extension possible est une base RDF, avec le langage d'interrogation SPARQL ;
* mixte : de tels SGBD utilisent les différents paradigmes évoqués ci-dessus.
De plus, les SGBD peuvent être distribués, centralisés ou embarqués et peuvent être spatiaux :
* centralisé ou distribué : un SGBD est dit centralisé lorsque le logiciel contrôle l'accès à une base de données placée sur un ordinateur unique. Il est dit distribué lorsqu'il contrôle l'accès à des données qui sont dispersées entre plusieurs ordinateurs. Dans cette construction, un logiciel est placé sur chacun des ordinateurs, et les différents ordinateurs utilisent des moyens de communication pour coordonner les opérations. Le fait que les informations sont dispersées est caché à l'utilisateur, et celles-ci sont présentées comme si elles se trouvaient à une seule place ;
* embarqué : une base de données embarquée (anglais embedded) est un SGBD sous forme de composant logiciel qui peut être incorporé dans un logiciel applicatif. Contrairement à un SGBD client-serveur dans lequel un processus traite les requêtes, un modèle embarqué se compose de bibliothèques logicielles liées par liaison dynamique avec le logiciel qui utilise le SGBD. Dans ce type de SGBD, la base de données est souvent composée d'un fichier unique dont le format est identique quelles que soient les caractéristiques de l'ordinateur utilisé. Bien que le SGBD offre de nombreux avantages par rapport à un enregistrement sur fichier, ces derniers sont souvent préférés aux SGBD, qui ont la réputation d'être des logiciels lourds, encombrants et compliqués à installer ;
* spatial : les applications informatiques telles que les systèmes d'information géographiques et les outils de conception assistée par ordinateur utilisent des SGBD de type spatial. Ce type de logiciel permet le stockage d'informations géométriques telles que des points, des lignes, des surfaces et des volumes. Ils comportent des fonctions permettant de retrouver une information sur la base de caractéristiques géométriques telles que les coordonnées ou la dimension. Le langage de requête du SGBD permet la manipulation d'informations de géométrie tels que lignes, points ou polygones ; le SGBD met en œuvre les algorithmes et les structures de fichiers nécessaire.
Les SGBD se différencient également par la taille des bases de données qu'ils peuvent manipuler.

### Taille des bases de données

Les différents SGBD sur le marché se différencient par le périmètre d'utilisation des bases de données : le périmètre influence le nombre d'utilisateurs simultanés, la taille des bases de données, le ou les emplacements, et la puissance de calcul nécessaire. Certains SGBD supportent de très grandes bases de données, et nécessitent des ordinateurs puissants et très coûteux. D'autres SGBD fonctionnent sur des ordinateurs personnels bon marché, avec des limites quant à la taille des bases de données et la puissance de calcul$^,$. On peut les classer en :
* SGBD personnels : ces produits sont beaucoup plus simples que les modèles pour les entreprises du fait qu'ils sont conçus pour servir un seul utilisateur à la fois. Lorsqu'un deuxième utilisateur essaye d'accéder à la base de données, il doit attendre que le premier ait terminé. Ces SGBD sont parfois installés sur des ordinateurs personnels pour des bases de données dites de bureau (anglais desktop database). Les bases de données des applications personnelles sont plus petites ;
* SGBD de groupe : les SGBD de groupe et d'entreprise peuvent être utilisés par plusieurs usagers simultanément. Ils sont dits de groupe lorsque le nombre d'usagers est relativement restreint (50 à 100). Aujourd'hui les modèles de groupe sont les plus populaires dans les petites et moyennes institutions$^,$ ;
* SGBD d'entreprise : les premiers SGBD sont apparus en 1960. Les ordinateurs de cette époque étaient très grands et très chers, et les SGBD étaient tous de taille entreprise : puissants, robustes et gourmands en matériel. Avec l'évolution technologique, les SGBD d'entreprise sont devenus plus puissants, sont capables de manipuler de grandes quantités d'informations et peuvent être utilisés par des milliers d'utilisateurs simultanément ;
* Internet et Big Data : l'apparition dans les années 2000 de services Internet de grande audience a nécessité des moyens techniques adaptés à des besoins sans précédent quant au nombre d'utilisateurs et à la quantité de données. Prévus pour la répartition de charge (anglais load balancing), de nouveaux SGBD dits NoSQL ont fait le compromis de ne pas mettre en œuvre certaines fonctionnalités classiques des SGBD en vue d'obtenir la puissance de calcul et la scalabilité nécessaire aux populaires services web de commerce en ligne, de recherche ou de réseau social.

## Histoire

Jusqu'en 1960 les informations étaient enregistrées dans des fichiers manipulées par les logiciels applicatifs. L'idée des bases de données a été lancée en 1960 dans le cadre du programme Apollo. Le but était de créer un dispositif informatique destiné à enregistrer les nombreuses informations en rapport avec le programme spatial, en vue de se poser sur la Lune avant la fin de la décennie. C'est dans ce but que IBM, conjointement avec Rockwell met sur le marché le logiciel Information Management System (IMS). Avec ce SGBD, les informations sont enregistrées dans des bases de données organisées de manière hiérarchique.
À la même époque, General Electric, avec l'aide de Charles Bachman met sur le marché le logiciel Integrated Data Store. Avec ce SGBD les informations sont enregistrées dans des bases de données organisées selon un modèle réseau, ce qui permet d'enregistrer des informations ayant une organisation plus complexe que le modèle hiérarchique.
En 1965, Dick PICK développe le système d'exploitation Pick, qui comporte un SGBD et le langage Databasic de Charles Bachman. En 2002 la technologie de Pick est utilisée dans des produits contemporains tels que JBase$^,$.
En 1967, le consortium CODASYL forme un groupe de travail, le database task group abr. DBTG, qui travaille à la normalisation de deux langages informatique en rapport avec les bases de données: le DML et le DDL.
Les organisations hiérarchiques et réseau des années 1960 manquaient d'indépendance vis-à-vis du format des fichiers, ils rendaient complexe la manipulation des données et il leur manquait une base théorique. En 1970 Edgar Frank Codd, employé de IBM publie le livre A relational model of data for large shared data banks, un ouvrage qui présente les fondations théoriques de l'organisation relationnelle. Sur la base des travaux de E.F Codd, IBM développe le SGBD System R, qui sera mis sur le marché à la fin des années 1970. Il est destiné à démontrer la faisabilité d'un SGBD relationnel. Le langage informatique propre à ce SGBD est le Structured Query Language (abr. SQL), défini par IBM et destiné à la manipulation des bases de données relationnelles.
Charles Bachman reçoit le prix Turing en 1973 pour ces contributions à la technologie des bases de données et Edgar Frank Codd reçoit le prix Turing en 1981 pour les mêmes raisons.
La Française Marion Créhange obtient un doctorat d'État de mathématiques en 1975, avec une thèse sous la direction de Claude Pair, intitulée Description formelle, représentation, interrogation des informations complexes : Système PIVOINES, sur l'indépendance des données dans les bases de données.
En 1978, ANSI publie la description de l'architecture Ansi/Sparc qui sert de modèle de référence en rapport avec l'indépendance des données des SGBD.
Les deux SGBD ténors du marché de 2010 que sont IBM DB2 et Oracle Database ont été mis sur le marché en 1979 et sont tous deux basés sur le modèle relationnel. La même année le langage SQL est normalisé par ISO.
Les moteurs de recherche et les datawarehouse sont des applications informatiques apparues dans les années 1990, qui ont influencé le marché des SGBD. Les moteurs de recherche ont nécessité le traitement d'informations non structurées et écrites en langage naturel. Et les datawarehouse ont nécessité la collecte et la consolidation de très grandes quantités d'informations en vue de réaliser des tableaux de synthèse.
Les modèles d'organisation orienté objet et objet-relationnel sont apparus dans les années 1990. Les premiers SGBD objet-relationnel ont été Postgres, Informix et Oracle Database en 1995. Le standard relatif au langage SQL a été modifié en 1999 pour pouvoir s'appliquer à ce type de SGBD.

## Construction et fonctionnement

Un SGBD est composé de nombreux programmes, parmi lesquels le moteur, le catalogue, le processeur de requêtes, le langage de commande et des outils :
* le moteur de base de données est le cœur du SGBD, il manipule les fichiers de la base de données, transmet les données depuis et vers les autres programmes, et vérifie la cohérence et l'intégrité des données ;
* un programme manipule le catalogue : le magasin qui contient la description de l'organisation de la base de données, les listes de contrôle d'accès, le nom des personnes autorisées à manipuler la base de données et la description des règles de cohérence (contraintes). Selon les modèles de SGBD ces informations peuvent être modifiées en utilisant le langage de commande, ou alors à l'aide d'une interface graphique ;
* le processeur de requête exécute les opérations demandées. Selon le modèles de SGBD, ces opérations peuvent être formulées dans un langage de commande, ou à l'aide d'une interface graphique du type QBE (Query by Example, en français requête par l'exemple) ;
* la majorité des SGBD comportent au moins un langage de commande. Ce langage de requête permet de manipuler le contenu de la base de données. Reconnu par la majorité des SGBD du marché, SQL est devenu le langage standard de facto.
Les outils du SGBD servent à créer des comptes rendus (reports), des écrans pour la saisie des informations, importer et exporter les données de et vers la base de données, et manipuler le catalogue. Ces outils sont utilisés par l'administrateur de bases de données pour effectuer des sauvegardes, des restaurations de données, autoriser ou interdire l'accès à certaines informations, et effectuer des modifications du contenu de la base de données - création, lecture, modification et suppression d'informations, abrégé CRUD (anglais create, read, update, delete). Ces outils servent également à surveiller l'activité du moteur et effectuer des opérations de tuning.
Les SGBD contemporains de haut de gamme comportent de nombreuses extensions qui offrent des fonctionnalités auxiliaires, leur construction reste cependant similaire à la plupart des SGBD.
Dans un SGBD relationnel, les demandes formulées au SGBD sont typiquement traitées en cinq étapes :
* les logiciels clients communiquent avec le SGBD en utilisant son interface de programmation via un réseau. Un dispositif de communication du SGBD vérifie l'identité du client, puis transmet les requêtes du client vers le noyau du SGBD et transmet au client les informations extraites par le SGBD ;
* le SGBD crée ensuite un thread en vue de traiter la requête. Un programme contrôle l'ensemble des threads et décide lesquels sont exécutés immédiatement et lesquels seront exécutés plus tard, en fonction de la charge de travail de l'ordinateur ;
* lors de l'exécution du thread, un compilateur transforme le texte exprimé dans le langage de requête du SGBD en un plan d'exécution dont la forme imite celle d'une expression algébrique utilisant l'algèbre relationnelle, puis un ensemble de programmes "opérateurs" calculent le résultat de l'expression en effectuant des opérations telles que la jointure, le produit cartésien, le tri et la sélection ;
* les opérateurs font appel au moteur de base de données, celui-ci exécute des algorithmes (appelés access method en anglais) en vue de retrouver les informations et entretenir les structures des fichiers de la base de données ;
* une fois les informations obtenues par le programme de manipulation de fichiers, celles-ci sont envoyées au thread d'exécution puis au dispositif de communication qui les transmet au client.

### Moteur de base de données

Partie centrale du SGBD, le moteur de base de données effectue les opérations d'enregistrement et de récupération des données. Selon le SGBD, la base de données peut être composées d'un ou de plusieurs fichiers. Le rôle du moteur est de manipuler ces fichiers.
Les index sont des structures destinées à accélérer les opérations de recherche, elles sont entretenues par le moteur de base de données. Les vues sont des tables virtuelles créées à partir d'autres tables, et leur contenu est entretenu par le moteur de base de données. Celui-ci manipule également le catalogue, contrôle les transactions, vérifie la cohérence des informations et vérifie que les utilisateurs accèdent uniquement à des informations autorisées :
* contrôle des transactions : lors d'une transaction plusieurs modifications sur la base de données correspondent à une seule opération. Le moteur assure la cohérence du contenu de la base de données, y compris en cas d'échec ou de panne. Le moteur vérifie que les modifications concurrentes des mêmes informations n'aboutissent pas à un résultat incohérent ;
* sécurité : le moteur vérifie qu'aucun utilisateur n'accède à des informations non autorisées, et qu'aucun utilisateur n'effectue des modifications qui seraient contraires aux règles de cohérence ;
* accès aux fichiers : le moteur manipule l'espace réservé au stockage. Les informations sont groupées par nature, et chaque fichier stocke une collection d'informations de même nature. Le programme d'accès au fichier structure les différents fichiers conformément au schéma d'organisation de la base de données.
Le moteur utilise des mémoires tampon : C'est un emplacement de mémoire centrale utilisé pour stocker temporairement des informations en transit. Les informations sont récupérées en bloc depuis les fichiers, puis placées dans des mémoires tampon. Lors des lectures suivantes l'information est récupérée depuis la mémoire tampon existante - opération beaucoup plus rapide que la lecture d'un fichier. Les opérations de lecture des fichiers sont ainsi diminuées, et les opérations d'écriture sont décalées, ce qui accélère le SGBD.
Les opérations effectuées par le moteur sont souvent inscrites dans un fichier journal, ce qui permet de les annuler en cas d'incident - panne ou annulation d'une transaction.

### Indépendance des données

Dans un dispositif de base de données - qui comporte un logiciel applicatif, un SGBD et une base de données - la manière dont les informations sont présentées aux utilisateurs diffère de la manière dont sont organisées les informations, et celle-ci diffère de la manière dont les informations sont enregistrées dans des fichiers. Cette construction à 3 points de vue est basée sur le modèle de référence ANSI/SPARC$^,$.
Chacune des 3 vues peut être modifiée par exemple en formulant des requêtes dans le langage du SGBD. L'indépendance des données est la capacité d'un SGBD de permettre la modification de n'importe laquelle des trois vues sans que cela nécessite de modification des autres vues$^,$ :
* vue utilisateur : les utilisateurs ne voient qu'une partie des informations contenues dans la base de données, ce que voit l'utilisateur sont des informations dérivées du contenu de la base de données et présentées d'une manière différente. Il existe différentes vues adaptées à chacun des rôles joués par les utilisateurs$^,$ ;
* schéma conceptuel : c'est le modèle de l'organisation logique des informations enregistrées dans la base de données, c'est une vue de la totalité des informations enregistrées. Le schéma est souvent organisé de la même manière que les objets du monde réel auquel les informations se rapportent et décrit en utilisant la notation entité-association$^,$ ;
* schéma physique : ce sont les caractéristiques des structures en place pour permettre le stockage permanent des informations sous forme d'enregistrements dans des fichiers. Ceci comprend l'espace réservé à chaque information, la manière dont les informations sont représentées sous forme de suite de bits, et la présence d'index destinés à accélérer les opérations de recherche$^,$.
Il y a indépendance des données si le schéma conceptuel peut être modifié sans nécessiter de modification du point de vue de l'utilisateur ni de la structure physique, et si la structure physique peut être modifiée sans que cela nécessite de modifications du schéma conceptuel ou du point de vue de l'utilisateur$^,$.

## Les usagers

Il existe plusieurs catégories d'usagers des SGBD, parmi lesquelles il y a l'administrateur de bases de données, le concepteur de base de données, le développeur, ainsi que les utilisateurs - plus ou moins avisés - des systèmes informatiques.
L'administrateur de bases de données (anglais database administrator abr. DBA) est un expert en SGBD, il s'occupe d'installer et de maintenir le SGBD ainsi que les outils annexes qui l'accompagnent. Il est la personne responsable de l'intégrité, de la sécurité, de la disponibilité des informations contenues dans les bases de données ainsi que de la performance du SGBD. Il protège les informations contre les accidents dus à des mauvaises manipulations, des erreurs de programmation, des utilisations malveillantes ou des pannes qui entraîneraient des détériorations du contenu des bases de données. Pour ce faire, l'administrateur de base de données autorise ou interdit l'accès aux informations et surveille l'activité du SGBD. Il effectue régulièrement des copies de sauvegarde en vue de permettre la récupération de données qui ont été perdues ou détériorées et effectue des réglages de tuning en vue d'améliorer la performance du SGBD. L'administrateur utilise les outils d'administration de base de données ou le langage de commande du SGBD$^,$.
Le concepteur de base de données (anglais database designer) est la personne qui identifie les informations qui seront enregistrées dans la base de données, les relations entre ces informations et les contraintes telles que la présence ou non de redondance. Le concepteur de base de données a une connaissance approfondie de l'usage qui est fait de ces informations et des règles qui en découlent. Il est chargé d'organiser la base de données de manière appropriée en mettant en place les structures nécessaires au stockage des informations.
Les développeurs créent des logiciels applicatifs et des batch dans un langage de programmation de haut niveau. Chaque logiciel cible une activité en particulier - par exemple retrouver des livres dans une bibliothèque - et est destiné aux autres usagers du SGBD. Le développeur travaille avec une personne exerçant l'activité en question, en vue de déterminer les besoins caractéristiques de cette activité puis il détermine l'architecture du produit, et le met en œuvre en rédigeant le code source. Le logiciel comporte des instructions qui font appel au SGBD pour rechercher ou modifier les informations. Certains utilisateurs expérimentés, qui connaissent un langage de programmation, créent des programmes pour leur propre usage$^,$$^,$.
Les utilisateurs avisés ont les connaissances nécessaires pour utiliser le langage de commande du SGBD et accèdent aux données à partir de leur ordinateur personnel. Ils ont été autorisés par l'administrateur à voir certaines informations et à les modifier. Les utilisateurs avisés peuvent rechercher, ajouter, modifier ou supprimer des données en utilisant le langage de commande du SGBD, alors que les utilisateurs profanes n'utilisent jamais le langage de commande mais accèdent aux informations à travers des logiciels applicatifs prévus à cet effet.
Les utilisateurs profanes accèdent aux informations à travers un logiciel applicatif. Ils exécutent des commandes ou choisissent des menus et n'ont pas connaissance du langage de commande ni de l'organisation de la base de données. Les opérations effectuées par ces utilisateurs sont moins sophistiquées et limitées aux possibilités offertes par le logiciel applicatif.

## Le marché

Les SGBD sont des logiciels complexes et stratégiques, utilisés dans de très nombreuses applications informatiques, parmi lesquelles le commerce électronique, les dossiers médicaux, les paiements, les ressources humaines, la gestion de la relation client et la logistique ainsi que les blogs et les wikis, ils sont le résultat de dizaines d'années de recherche scientifique et industrielle. Les premiers SGBD de l'histoire ont fortement influencé ce secteur de marché, et les idées de ces pionniers sont encore largement copiées et réutilisées par les SGBD contemporains. Le marché des SGBD est très ténu, dominé par une poignée de produits concurrents de haut de gamme.
Le volume des ventes de SGBD relationnels est estimé entre 6 et 10 milliards de dollars par année en 2005. En 2008 les trois tenors du marché que sont IBM DB2, Oracle Database et Microsoft SQL Server occupent 80 % du marché des SGBD relationnels.
En 2002 le marché des SGBD est réparti en 3 segments :
* le premier segment est occupé par les trois grandes marques, largement implantées et reconnues que sont IBM Db2, Oracle Database et Microsoft SQL Server. Ces produits sont très populaires, et peuvent être utilisés pour de nombreuses applications. DB2 et Oracle fonctionnent sur de nombreux types d'ordinateurs qui vont des mainframe jusqu'aux ordinateurs de poche ;
* dans le deuxième segment se trouvent des produits un peu moins populaires tels que Sybase et Informix, ils sont un peu moins implantés, moins connus, et leurs éditeurs sont des sociétés un peu plus petites et avec moins de personnel ;
* dans le troisième segment se trouvent tous les autres SGBD, dont certains sont notables dans les utilisations spécialisées ou des marchés de niche. Par exemple Teradata de NCR est un SGBD utilisé pour les bases de données géantes et les datawarehouse. Dans ce segment de marché se trouvent les SGBD open source tels que PostgreSQL et MySQL ainsi que les SGBD orientés objet tels que Versant (en) ou ObjectDesign (en).
Marché de niche en 2002, le marché des SGBD Open Source est estimé à 850 millions de dollars en 2008, et selon prévisions à 1,2 milliard de dollars en 2010, ce coût comprend les licences, les contrats de garantie et d'assistance technique. Alors que les SGBD de grande marque sont appréciés pour les applications stratégiques en raison de leur robustesse, leur richesse et leur durabilité, les SGBD open source sont plus simples, n'offrant pas toutes les fioritures des produits de grande marque, ils sont appréciés pour leur facilité d'utilisation et recherchés par les petites et moyennes institutions. Divers clients espèrent pouvoir remplacer des coûteux SGBD de grande marque par des SGBD open source moins coûteux, mais de tels remplacement sont rares, et les SGBD, MySQL et PostgreSQL sont utilisés pour de nouvelles applications, ceci en raison des difficultés de migration$^,$

### Pour l'acheteur

Le choix du SGBD est souvent une décision stratégique pour une institution. Le coût d'acquisition d'un SGBD qui supporte plusieurs milliers d'utilisateurs et une base de données de grande dimension peut approcher le million de dollars. En 1993 il existait différents SGBD relationnels, et ceux-ci étaient considérés comme suffisamment matures pour être utilisés dans des applications stratégiques. Les produits sont complexes, les différences sont parfois subtiles, ce qui rend le choix difficile pour l'acheteur. Dix ans plus tard le choix n'est plus aussi difficile qu'il ne l'était avant; le nombre d'éditeurs de SGBD a diminué du fait de fusions et le marché est dominé par un petit nombre d'acteurs majeurs.
D'après un sondage réalisé en 1993 par le magazine Network World, il ressort que les critères de choix du SGBD les plus importants aux yeux des acheteurs sont la fiabilité, la performance, la conformité aux normes, la palette d'ordinateurs supportés, et la facilité d'utilisation. Le prix n'apparaît qu'en dixième position. Toujours d'après ce sondage, 70 % des acheteurs se disent prêts à débourser entre 2 000 et 25 000 dollars pour l'acquisition d'un SGBD.
Les questions fréquentes des acheteurs concernent la performance, les caractéristiques du langage de commande, du contrôle des accès concurrents ainsi que les types de données disponibles. La question de la performance apparaît souvent en haut de la liste des acheteurs et en bas de la liste des vendeurs; raison pour laquelle les essais et les benchmarks sont une pratique courante. Les caractéristiques du langage de commande SQL renseignent sur la syntaxe à laquelle devront se conformer les requêtes envoyées au SGBD. Le standard SQL a été modifié à plusieurs reprises, il existe trois niveaux de conformité, et le langage SQL reconnu par chaque SGBD du marché se rapproche d'un ou l'autre de ces standards.
Une entreprise de taille moyenne utilise couramment plusieurs SGBD simultanément, le choix du SGBD étant rarement anticipé, souvent imposé par l'arrivée d'un logiciel applicatif, et difficilement réversible. Il arrive que la société acquière un logiciel applicatif qui ne fonctionne sur aucun des SGBD qu'elle possède déjà. Il arrive également qu'une société motive l'achat d'un nouveau SGBD par la volonté d'utiliser les technologies les plus récentes et les plus éminentes. Le remplacement d'un ancien SGBD par un nouveau est difficile en raison du manque de compatibilité entre les différents produits - ce qui rend nécessaire d'adapter les logiciels applicatifs au nouveau venu. Le résultat est que souvent les logiciels applicatifs ne sont pas adaptés, et le vieux SGBD continue d'être utilisé en même temps que les nouveaux produits.

### Quelques SGBD

| Nom SGBD | Année | Éditeur | Caractéristiques | type de logiciel | Licence |
| Apache Derby | 1996 | Apache Software Foundation | embarqué, relationnel, centralisé | Composant logiciel | Apache |
| DB2 | 1983 | IBM | pour entreprises, groupes de travail, particuliers | serveur | propriétaire |
| dBase | 1978 | Ashton-Tate | relationnel, pour particuliers | L4G | propriétaire |
| FileMaker Pro | 1985 | FileMaker | relationnel, pour groupes de travail | logiciel applicatif | propriétaire |
| 4D | 1985 | 4D | relationnel, pour groupes de travail et entreprises | logiciel applicatif | propriétaire |
| Firebird | 1981 | Firebird Foundation | relationnel, centralisé, embarqué, pour groupes de travail et entreprises$^,$ | serveur | Interbase |
| HSQLDB | 2000 | Thomas Mueller | relationnel, embarqué, centralisé, pour groupes de travail et particuliers$^,$ | Composant logiciel | BSD |
| HFSQL | 1993 | PC Soft | | composant logiciel | propriétaire |
| Informix | 1981 | IBM | pour entreprises, groupes de travail, distribué | serveur | propriétaire |
| Ingres | 1974 | Ingres Corporation | relationnel, spatial, centralisé, distribué | serveur | GPL |
| Caché | 1997 | InterSystems | objet, pour entreprises, distribué | serveur | propriétaire |
| MariaDB | 2009 | Monty Program Ab | | serveur | GPL |
| MaxDB$^,$ | 1977 | SAP AG et MySQL AB | objet-relationnel, pour entreprises et groupes de travail, centralisé | composant logiciel | GPL |
| Microsoft Access | 1992 | Microsoft | relationnel, pour particuliers et groupes de travail$^,$ | L4G | propriétaire |
| Microsoft SQL Server | 1989 | Microsoft | entreprises, groupes de travail, particuliers, relationnel, distribué | serveur | propriétaire |
| MySQL | 1995 | Oracle Corporation et MySQL AB | centralisé, embarqué, distribué, pour entreprises, groupes de travail et particuliers | serveur | GPL |
| OpenOffice.org Base | 2002 | Oracle Corporation | | Logiciel applicatif | LGPL |
| Oracle Database | 1979 | Oracle Corporation | entreprises, groupes de travail, particuliers, relationnel, spatial, distribué | serveur | propriétaire |
| Paradox | 1987 | Corel | | logiciel applicatif | propriétaire |
| Pick | 1968 | Pick System | | serveur | propriétaire |
| PostgreSQL | 1985 | Michael Stonebraker, PostgreSQL Global Development Group | | serveur | BSD |
| SQLite | 2000 | D. Richard Hipp | embarqué | bibliothèque/composant logiciel | Domaine public |
| MongoDB$^,$ | 2007 | MongoDB | NoSQL orientée documents | serveur | SSPL |
| Cassandra | 2008 | Fondation Apache | NoSQL orientée colonnes | | Licence Apache 2 |
| Couchbase | 2010 | Couchbase | NoSQL orientée documents | | |
| Elasticsearch | 2004 | Elasticsearch | NoSQL index inversé | | |
| HBase | 2006 | Hortonworks | NoSQL orientée colonnes | | |
| Redis | 2009 | Redis Labs | NoSQL orientée clé-valeur | | |
| Riak | 2009 | Basho Technologies | NoSQL orientée clé-valeur | | |
| DynamoDB | 2012 | Amazon | NoSQL orientée clé-valeur et documents | | |
| Voldemort | 2009 | LinkedIn | NoSQL orientée clé-valeur | | |
| Big Table | 2005 | Google | NoSQL orienté colonnes | | propriétaire |
| MemcacheDB (en) | | | NoSQL, en mémoire | | BSD |
| Vertica (en)$^,$ | 2005 | | NoSQL orientée colonnes | | propriétaire |
| Neo4j | 2010 | Neo technology | NoSQL orientée graphe | | GNUv3 et AGPL-3.0 |
| Oracle NoSQL Database | | Oracle Corporation | NoSQL | | |