Quand les développeurs commencent à réfléchir à la gestion des données ou au choix d’une base de données pour leur application, la première chose qui leur vient souvent à l’esprit est —
— c’est vrai, une table.
Ensuite, ils mettent en place différentes tables pour les différents types de données, comme avoir une table pour les utilisateurs et une autre pour les produits, les commandes, et ainsi de suite. Avec les données réparties dans différentes tables, elles sont liées les unes aux autres. Par conséquent, les tables auront des références aux éléments des autres tables via une clé étrangère. Et finalement, ils peuvent finir par choisir une base de données relationnelle à chaque fois pour résoudre leurs problèmes. Surtout lorsqu’il s’agit de relations, l’idée d’une base de données non relationnelle peut sembler très contre-intuitive.
Mais le problème est — les données ne sont pas toujours plates. Les exigences en matière de données peuvent être complexes, et lorsque les développeurs visualisent leurs données sans tenir compte des bases de données, elles ne sont souvent pas tabulaires. Au lieu de cela, elles peuvent sembler imbriquées, hiérarchiques, voire sous forme de graphe.
Vous n’avez pas besoin d’imaginer une table à chaque fois que vous commencez à travailler avec des données. Dans les applications modernes, les données ont souvent besoin d’un schéma flexible avec des types de données complexes. Par conséquent, les aplatir dans une table n’est pas toujours la meilleure idée. De plus, les bases de données relationnelles ont également leurs propres limitations en termes de mise à l’échelle. Au fur et à mesure que vous évoluez, vous pourriez devoir vous soucier du sharding, ce qui nécessite souvent des changements significatifs au niveau de l’application.
Entrez dans les bases de données non relationnelles, plus communément connues sous le nom de NoSQL. Vous pourriez passer à côté de l’extraction de tout le potentiel de NoSQL si vous les avez évitées dans vos choix de conception. Dans cet article, nous définissons rapidement ce que sont les bases de données non relationnelles, puis nous proposons différents choix de bases de données NoSQL pour différents problèmes réels.
À la fin, nous aborderons également les avantages que les bases de données NoSQL offrent par rapport aux bases de données relationnelles, et nous évoquerons également les scénarios où une base de données relationnelle reste un meilleur choix.
Bases de données non relationnelles, ou NoSQL
En termes simples, ces bases de données stockent des données dans un format non tabulaire. Elles se déclinent en différents types, chacun étant conçu pour des finalités spécifiques et le type de données non structurées qu’ils peuvent prendre en charge. Les plus courants sont :
- Les bases de données documentaires : Stockent des données dans des documents de type JSON.
- Les bases de données clé-valeur : Stockent des données avec une structure ‘clé-valeur’ pour des clés uniques.
- Les bases de données graphiques : Utilisent des nœuds, des arêtes et des propriétés pour représenter et stocker les relations entre les points de données.
D’autres types sont les bases de données orientées colonnes, en mémoire et de séries chronologiques.
Les différents fournisseurs de bases de données NoSQL proposent des fonctionnalités telles que la création d’index sur certains champs, des SDK conviviaux pour les développeurs, une haute disponibilité, des opérations transactionnelles et la possibilité de redimensionner facilement votre base de données vers le haut ou vers le bas.
Résoudre des problèmes réels avec NoSQL.
Voyons quelques exemples où nous résolvons des problèmes de la vie réelle avec des bases de données NoSQL.
Création d’une application de blog qui prend en charge les commentaires et les tags
Les bases de données documentaires sont idéales pour ce type de systèmes de gestion de contenu. Chaque contenu peut être un document séparé. Le schéma est flexible, et chaque document peut contenir des sous-collections. Vous pouvez tirer parti des capacités d’indexation des champs de tableau des fournisseurs de bases de données documentaires pour effectuer des requêtes complexes, par exemple, récupérer tous les blogs avec leurs tags.
Plateformes de réseaux sociaux et professionnels
Les bases de données graphiques aident à définir des relations complexes entre les personnes. Trouvez facilement des amis d’amis via des recherches graphiques.
Données des capteurs IoT
Utilisez des données de séries temporelles pour gérer d’énormes quantités de données horodatées provenant d’un appareil capteur.
Panier d’achat
Utilisez une base de données clé-valeur, qui offre une forte concurrence avec des lectures et écritures rapides. Vous pouvez également utiliser des bases de données clé-valeur pour stocker les informations de session des utilisateurs, et le panier d’achat peut être un champ au sein de la session (pour une session d’achat individuelle).
Moteurs de recommandation
Utilisez des bases de données graphiques pour cartographier les relations entre les utilisateurs, les produits et les préférences.
Où NoSQL surpasse les bases de données relationnelles
Voici quelques points où les bases de données NoSQL offrent des avantages par rapport aux bases de données relationnelles :
- Productivité des développeurs : Les fournisseurs de bases de données NoSQL offrent des API et des SDK adaptés au développement d’applications modernes, permettant un prototypage et un développement plus rapides.
- Scalabilité : Les bases de données NoSQL se mettent à l’échelle horizontalement (où il suffit d’ajouter plus de serveurs ou de nœuds), ce qui est rentable et plus facile à gérer par rapport à la scalabilité verticale requise par les bases de données relationnelles.
- Flexibilité : NoSQL offre un schéma flexible, parfait pour le développement agile et l’évolution des exigences des applications.
- Gestion des données imbriquées : Souvent, les données sont imbriquées ou hiérarchiques, comme dans les formats JSON ou XML. Les bases de données NoSQL peuvent prendre en charge ces formats, où une transformation complexe peut être nécessaire lors de l’utilisation de bases de données relationnelles pour ceux-ci.
Où les bases de données relationnelles conservent un avantage
Voici quelques cas d’utilisation où les bases de données relationnelles restent pertinentes et sont une bonne idée.
- Analyse et reporting : Les bases de données relationnelles sont optimisées pour les requêtes ad-hoc, les agrégations et le reporting. Pour tout cas d’utilisation analytique et de reporting, les bases de données relationnelles restent un choix privilégié.
- Utilisation intensive des relations et des jointures : Bien que vous puissiez toujours gérer et travailler avec des relations dans les bases de données NoSQL, si votre application dépend fortement des jointures entre différents ensembles de données, les bases de données relationnelles peuvent encore être une bonne idée.
- La cohérence plutôt que la disponibilité: Dans les scénarios où la cohérence des données est plus importante que la disponibilité (par exemple, les transactions financières), les bases de données relationnelles peuvent offrir plus de garanties.
Et voilà, notre article se termine. Nous avons exploré ce que sont les bases de données NoSQL et comment elles répondent aux défis de gestion des données dans la vie réelle. Les bases de données NoSQL ouvrent un monde de possibilités pour les applications modernes, de leur flexibilité dans la manipulation de structures de données complexes aux fonctionnalités puissantes proposées par les fournisseurs. Pour ceux qui n’ont pas encore essayé NoSQL, j’espère que cela vous inspirera pour essayer lors de votre prochain projet – vous pourriez bien trouver que cela correspond parfaitement à vos besoins.
Source:
https://dzone.com/articles/nosql-for-relational-minds