Incontournable, une base de données est un programme qui permet de stocker énormément d’informations sur la durée, et de les retrouver rapidement. Elle contiendra par exemple le nom, prénom et adresse de plusieurs personnes. Les applications backend s’y connectent pour requêter des informations ou faire des mises à jour.
Les bases de données relationnelles, comme MySQL ou PostgreSQL, enregistrent les données dans des tableaux à deux dimensions. Elles assurent l’intégrité des données avec de fortes relations (ex., une commande liée à un seul client), du typage et des contraintes sur chaque donnée (ex., une chaîne de caractère de taille 15 pour un numéro de téléphone), et des transactions fiables (ou ACID pour atomicité, cohérence, isolation et durabilité). Ce type de base de données est très utilisée, mais moins adaptée pour le big data (données massives).
À l’inverse, les bases de données NoSQL enregistrent les données dans divers formats, notamment le JSON ou la clé-valeur, qui permettent d’ajouter n’importe quel type d’information. Par exemple, enregistrer une adresse postale avec un imprévu comme un digicode, un étage, ou un code d’ascenseur. Ou ajouter des colis à livrer à cette adresse. Les données peuvent être réparties sur plusieurs serveurs (scalabilité horizontale) grâce au sharding, une technique de partitionnement, et une recherche sera rapide même avec de gros volumes de données. Une centralisation de logs applicatifs et systèmes est couramment faite avec la base de données Elasticsearch de la suite ELK.
La plupart des bases de données utilisent un index, une structure de données, pour rechercher beaucoup plus rapidement des informations. Le type d’index le plus courant est l’arbre B, ou B-tree en anglais, qui trie et dispose des clés dans un graphe. Les clés dans les feuilles de l’arbre (le niveau le plus bas) sont souvent les adresses mémoires des données. Un autre index connu est la table de hachage, associant des clés-valeurs. Les clés sont hachées (condensés à une taille fixe) et converties en index pour être réparties uniformément dans une table. L’accès à la mémoire est directement connu à partir du hachage après une conversion. Un exemple, HashMap en Java.
Les bases de données peuvent être régulièrement sauvegardées, généralement dans des dumps (copie brute), pour être restaurées en cas de corruption de donnée, panne, ou autre sur le serveur. Elles ont également une gestion d’authentification et d’accès pour se protéger des attaques et donner des permissions à des utilisateurs ou des applications.