Qu'est-ce qu'une base de documents ?
Une base de documents range les données comme on les pense : un patient, avec son adresse, ses rendez-vous et ses allergies, dans un seul document, plutôt que réparti entre plusieurs tableaux qu'il faut ensuite rapprocher.
Un document, une chose du monde
Un document est un objet, écrit comme du JSON : des champs, des valeurs, des listes, d'autres objets dedans.
{
"nom": "Awa Diop",
"ville": "Dakar",
"naissance": "1990-05-17",
"allergies": ["pénicilline"],
"adresse": { "quartier": "Plateau", "rue": "Rue 10" }
}Les documents d'une même sorte se rangent dans une collection (les patients, les rendez-vous) ; les collections dans une base. Deux documents d'une collection n'ont pas besoin d'avoir exactement les mêmes champs : un patient sans allergie n'a pas de liste vide à porter.
Pourquoi les développeurs l'aiment
- Le document ressemble au code. L'objet que votre application manipule est celui que la base garde ; il n'y a pas à le découper à l'écriture ni à le recomposer à la lecture.
- La forme peut évoluer. Un nouveau champ s'ajoute aux nouveaux documents, sans migration de tout le tableau.
- Les lectures sont simples. Ce qui se lit ensemble est rangé ensemble : une seule lecture rend le patient et son adresse.
Et la rigueur ?
Une base de documents n'est pas une base sans règles. Dans IshedDB, une collection peut recevoir une définition : les champs obligatoires, leurs types, les valeurs uniques (une adresse e-mail ne sert qu'une fois), les champs cachés (un mot de passe chiffré qui ne sort jamais sans être demandé), les documents qui expirent seuls. Un document qui ne la suit pas est refusé, avec le champ et la raison.
Et quand il faut écrire plusieurs documents ensemble, tout ou rien, les transactions le garantissent.
Interroger
On ne parcourt pas les documents un à un : on décrit ceux qu'on veut. IshedDB parle la syntaxe de MongoDB, la plus répandue des bases de documents :
await patients.find({ ville: 'Dakar', allergies: 'pénicilline' }).sort({ nom: 1 }).toArray();Des index rendent ces recherches rapides, même sur des millions de documents ; les agrégations regroupent et additionnent directement dans la base (combien de rendez-vous par service ce mois-ci ?).
Pour aller plus loin
- Premiers pas : votre premier document écrit et lu.
- La bibliothèque Node.js : tout ce qu'on peut demander à une collection.