Qu'est-ce qu'un moteur de base de données exactement?


14

J'ai parcouru la définition sur http://en.wikipedia.org/wiki/Database_engine plusieurs fois:

Un moteur de base de données (ou "moteur de stockage") est le composant logiciel sous-jacent qu'un système de gestion de base de données (SGBD) utilise pour créer, lire, mettre à jour et supprimer (CRUD) des données d'une base de données.

Ce que je ne comprends pas, c'est ce qu'il reste à faire, n'est-ce pas CRUD tout ce que font les bases de données?

Si le moteur de base de données remplit ces fonctions, que fait le reste de la base de données?


Pour une réponse directe à la question posée en gras ( que fait le reste de la base de données? ), Voir la réponse de Bryan. Pour plus de clarté sur ce que fait un moteur de base de données, outre CRUD, voir la réponse de Leigh.
nealmcb

Réponses:


15

CRUD est destiné à définir les caractéristiques nécessaires à une base de données en ce qui concerne le stockage persistant. Il ne vise pas à décrire tout ce qui pourrait être fait par un moteur de base de données.

Pour faire une comparaison, fondamentalement, un véhicule est un appareil utilisé pour le transport. Bien que vraie, cette définition n'inclut certainement pas tous les détails impliqués dans une automobile moderne.

Un moteur de base de données peut gérer plusieurs utilisateurs, transactions , MVCC (Multiversion Concurrency Control) , tampons et caches, ACID (atomicité, cohérence, isolation, durabilité) , ainsi que différents niveaux d'isolement . Une lecture peut extraire des données de la mémoire, de bases de données distantes et de plusieurs tables sur disque en les traitant à l'aide de SQL via plusieurs chemins de code explicites et / ou implicites afin de les présenter à l'application demandeuse. Une création peut allouer du stockage, provisionner des structures, attribuer des valeurs et effectuer son propre traitement avant de stocker des données. Etc.


Il s'agit d'une réponse très compacte, mais complète. +1 !!!
RolandoMySQLDBA

BTW Belle analogie sur le véhicule par rapport à un type de véhicule spécifique.
RolandoMySQLDBA

À mon avis, les transactions, la garantie ACID, les niveaux d'isolement, le contrôle d'accès concurrentiel, les tampons, les caches sont tous gérés par le moteur de base de données lui-même. Pourquoi je le dis? ... Consultez ce linux.org/threads/an-introduction-to-mysql-storage-engines.4220
Shatu

@Leigh, la simultanéité (par manque de) n'est-elle pas une caractéristique du moteur de stockage et non du SGBD? Si c'est une fonctionnalité du SGBD, pourquoi MariaDB / MySQL ne pourrait-il pas effectuer des transactions pour certains moteurs de stockage comme MyISAM?
Pacerier

@Pacerier - Cela peut être vrai pour les systèmes qui font une séparation entre le SGBD et le moteur de stockage, pour d'autres, la distinction n'a pas de sens.
Leigh Riffel

12

Certaines bases de données peuvent exécuter de nombreux moteurs, selon le meilleur ajustement pour le travail. Par exemple, beaucoup de mes applications utilisent InnoDB pour la plupart des données (contraintes clés et verrouillage au niveau des lignes), MyISAM pour les données de session (rapide, moins de traitement) et ArchiveDB pour la piste d'audit (compressé et inséré / sélectionné uniquement, pas de mise à jour / suppression).

Le "reste" du logiciel de base de données fournit une interface commune à utiliser via des API ou des terminaux, permet des actions complexes (comme les jointures, les sous-requêtes, etc.) et gère la santé / l'état et la configuration des moteurs inclus. Il y a beaucoup à nourrir et à entretenir un moteur, et le logiciel de base de données cache toute cette complexité.


Merci d'avoir répondu à la question posée en gras!
nealmcb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.