Dans un logiciel de base de données il y a plusieurs composants qui discutent entre eux. Certains composants discutent aussi avec l’extérieur et un des composants les plus importants est le moteur de base de données.
Le moteur de base de données a un rôle central. Il est le garant des opérations CRUD et vérifie, autorise et exécute les actions suivantes :
- Création de données ;
- Lecture de données ;
- Mise à jour de données ;
- Suppression de données.
Mais le moteur de base de données a d’autres tâches qui lui sont dévolues :
- La gestion des fichiers et du stockage sous-jacent ;
- L’optimisation des accès et des performances (mémoire cache, antémémoire);
- La bonne application des règles de gestion (certaines découlant de CRUD, d’autres non) comme le suivi des droits d’accès, les mécanismes de verrous, les transactions ou l’intégrité référentielle ;
- La journalisation des opérations (fichier log de traçabilité des opérations) ;
- L’automatisation de certaines opérations traitées ensemble (les procédures stockées).
Le moteur peut discuter avec l’extérieur et nombreux sont ceux qui proposent une API pour communiquer avec lui via un autre programme.
Attention à la confusion : le moteur ne fait pas tout et il ne faut le confondre avec le logiciel de base de données (qui englobe le moteur) ni avec les serveurs de bases données (qui l’englobent de façon encore plus vaste).
InnoDB, Aria et MyISAM sont trois moteurs possibles pour MySQL, Microsoft Jet est le moteur d’Access, SQLite est un moteur autonome, Extensible Storage Engine est le moteur des outils Exchange et Active Directory de Microsoft… Les outils Opensource proposent souvent plusieurs moteurs, les outils propriétaires ne laissent généralement pas le choix et le moteur est intégré à l’outil de bases de données.