La création d'un nouveau projet implique de choisir la bonne base de données pour stocker vos données. De nombreux développeurs que je connais choisissent par défaut la base de données relationnelle dès le départ. Mais est-ce la meilleure décision ? Bien sûr, cela dépend de nombreux facteurs. Dans cet article, j'aimerais vous présenter d'autres types de bases de données afin de faciliter vos choix et de vous aider à vous préparer à vos futurs projets.
Le type de base de données n'est pas le seul élément à prendre en considération. Il y a beaucoup d'autres questions à prendre en compte, par exemple le nombre d'utilisateurs actifs de l'application ? Avez-vous besoin d'une cohérence forte partout ? La cohérence éventuelle suffira-t-elle dans certains cas ? Il y a tant de questions sans réponses directes, car "plus on s'y intéresse, plus c'est compliqué". Veuillez donc noter que cet article se concentre uniquement sur les types de bases de données.
Prenez une tasse de café et savourez cette lecture.
Classification générale des bases de données
Pour commencer, il est bon de savoir qu'il existe deux grands types de bases de données : les bases de données relationnelles (SQL) et les bases de données non relationnelles (NoSQL).
- Les bases de données SQL sont structurées de manière relationnelle, ce qui signifie que les données sont stockées dans des tables et qu'il existe des relations entre elles.
- Les bases de données NoSQL (Not only SQL), contrairement aux bases de données relationnelles, ne sont pas bien structurées et permettent donc plus d'adaptabilité et de flexibilité.
Il existe un autre type de base de données que les deux mentionnés ci-dessus, à savoir une base de données en mémoire. Elle ne peut être classée ni comme relationnelle ni comme non relationnelle, car elle est liée à l'endroit où les données sont physiquement stockées. Chaque base de données peut être stockée sur un disque ou en mémoire.
Types de bases de données
1. Relationnel
À mon avis, c'est le type de base de données le plus répandu. Il fonctionne bien avec des données structurelles pour lesquelles vous souhaitez conserver des relations entre les enregistrements. La structure de la base de données est décrite dans un schéma.
Les principaux avantages concernent les transactions (elles contribuent à garantir l'intégrité des données et suivent les règles ACID) et la capacité à traiter un grand nombre de requêtes complexes.
Quand le choisir ?
Il est utile pour conserver des données dont la structure ne change pas très souvent et que vous devez stocker de façon permanente, par exemple :
- CRM (Customer Relationship Management),
- Gestion des commandes,
- ERP (Entreprise Resource Planning),
- l'entreposage de données ou la gestion des stocks,
- comptabilité ou finance.
Exemples :
Amazon Aurora, Microsoft Azure Base de données SQL, PostgreSQL, MySQL.
Les bases de données relationnelles sont insuffisantes pour de nombreuses nouvelles applications et vous devez avoir plus d'une base de données. Dans la prochaine partie de l'article, je me concentrerai sur les bases de données non relationnelles.
2. Clé-valeur
Elle stocke chaque valeur de données avec une clé unique. Cela signifie que l'on accède aux données par une seule clé, tout comme dans une carte de hachage. Contrairement aux bases de données relationnelles, elles n'appliquent ni le schéma ni les relations entre les enregistrements. La plupart de ces bases de données ne prennent généralement pas en charge les opérations de mise à jour. Pour modifier des données, il faut écraser l'ensemble des données existantes.
Quand le choisir ?
Il est utile pour les données que vous souhaitez lire/écrire rapidement (mais qui ne sont pas mises à jour très souvent) :
- enchères en temps réel, services publicitaires,
- la mise en cache des données,
- la gestion des sessions,
- les paniers d'achat,
- les préférences des clients ou la gestion des profils.
Exemples :
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
3. Le document
Il stocke des collections de documents. Chaque document contient des champs avec des données, qui peuvent être de simples valeurs ou des éléments complexes, comme des listes ou des collections d'enfants. Il est important de savoir que chaque document peut avoir une structure différente, même s'il représente la même chose (chaque document est unique et évolue dans le temps). Par exemple, le premier document client contient moins d'informations que le second :
{
"FirstName" : "John",
"LastName" : "Fake",
"Motos :" [
{
"Modèle" : "BMW",
"Year" : 2020
}
]
}
{
"FirstName" : "Alex",
"LastName" : "Nolastname",
"Age" : 15,
"Adresse" : {
"Pays" : "Pologne",
"Ville" : "Quelque part"
},
"Motos :" [
{
"Model" : "BMW",
"Year" : 2020
}
]
}
Quand le choisir ?
Il est utile pour les données qui nécessitent un schéma flexible pour un traitement rapide :
- produit catalogues,
- CMS (système de gestion de contenu),
- les profils d'utilisateurs et la personnalisation.
Exemples :
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
4. Graphique
Il utilise une structure graphique et se compose de deux éléments : les nœuds et les arêtes. Les nœuds sont analogues aux lignes d'un tableau ou à des documents JSON. Les arêtes sont les relations entre les nœuds - elles sont aussi importantes que les nœuds. Ils peuvent tous deux avoir des propriétés. En outre, les arêtes peuvent avoir une direction définie pour une relation.
Quand le choisir ?
Il est utile lorsque vos données sont similaires à un graphique, c'est-à-dire lorsque les relations entre les éléments de données sont dynamiques et changent au fil du temps. En outre, il s'agit d'un bon choix lorsqu'une entreprise ou un organisme technique équipe ont besoin de comprendre les relations entre leurs données. Voici quelques exemples marquants :
- les organigrammes,
- la détection des fraudes,
- les graphes sociaux/réseaux,
- les moteurs de recommandations,
- les graphes de connaissances.
Exemples :
Amazon Neptune, Neo4j, ArangoDB, Titan.
5. Séries chronologiques
Il stocke des données organisées dans le temps. En général, il accumule d'énormes quantités de données en temps réel. Il est le plus souvent utilisé pour sauvegarder des données, bien que la mise à jour soit très rare. En général, un horodatage est utilisé comme clé primaire et/ou pour trier les données. Certaines bases de données permettent d'inclure des balises de définition en tant qu'informations supplémentaires, comme l'origine ou le type de données.
Quand le choisir ?
Il est utile de stocker de petites quantités de données annexées séquentiellement dans l'ordre chronologique, par exemple dans.. :
- DevOps,
- le contrôle des applications,
- la surveillance et la télémétrie des événements,
- IdO (comme la collecte de données à partir des capteurs de l'appareil).
Exemples :
Azure Time Series Insights, Amazon Timestream, InfluxDB.
6. Grand livre
Il fournit un journal des transactions immuable, transparent et cryptographiquement vérifiable, détenu par une autorité centrale. - Aperçu du QLDB d'Amazon
Expliquons brièvement chaque mot-clé de la citation ci-dessus :
- immuable - signifie qu'un enregistrement créé dans cette base de données ne peut être ni supprimé, ni modifié, ni même écrasé,
- transparent - il suit et conserve un enregistrement séquentiel de chaque modification de vos données,
- cryptographiquement vérifiable - les données créées dans cette base de données sont vérifiées par des techniques de hachage cryptographique, similaires à celles des blockchains (en utilisant la fonction de hachage SHA-256).
Quand le choisir ?
Il est utile de conserver un historique précis, par exemple en enregistrant la saisie séquentielle de chaque modification de données, comme dans l'exemple suivant :
- les finances (historique des transactions de débit ou de crédit),
- fabrication (track where parts were sourced),
- l'assurance,
- RH et paie,
- de détail,
- les chaînes d'approvisionnement.
Exemples :
Amazon QLDB
Conclusions
Il n'y a pas de réponse simple à la question posée dans le titre de cet article. La seule façon de choisir la bonne base de données est d'en savoir plus sur vos données. Répondez à la question : "Quel type de données votre application génère-t-elle ?", et vous serez en mesure de faire les bons choix.
En outre, vous devez connaître parfaitement les exigences de l'entreprise et le domaine d'application. Vous devez savoir comment vous utiliserez les données, quelles requêtes vous enverrez à la base de données, combien de fois vous conserverez, lirez, mettrez à jour ou supprimerez vos données. Tous ces éléments sont importants, mais tous les développeurs n'y accordent pas suffisamment d'attention.
Pensez à vos données dans l'application que vous développez pour améliorer/créer un meilleur logiciel. Dans l'ensemble, j'espère que vous connaîtrez suffisamment bien vos données pour les stocker dans un endroit où elles seront heureuses.
En savoir plus :
Quelques astuces pour accélérer votre application JavaScript
Comment améliorer les performances de Rails
Faits et mythes concernant la coopération avec un partenaire externe pour le développement de logiciels