La grande majorité des applications exigent aujourd’hui des capacités de gestion de bases de données qui ne s’intègrent pas facilement dans un même lieu. Par exemple, lorsque je crée une application conçue pour une agence de voyages, je peux avoir besoin de différents types de bases de données, notamment une base de données de type clé valeur pour les sessions utilisateurs, qui enregistre les données les plus utiles aux utilisateurs, une base de données de type document pour le catalogue des produits, une autre de type graphe pour les recommandations et enfin une base de données de type relationnelle pour les données financières.
L’époque de la base de données unique – où il vous suffisait de choisir une seule base de données (relationnelle) – est révolue depuis bien longtemps. Et ce, pour de très bonnes raisons. Bien que les bases de données relationnelles continuent d'être la solution idéale pour de nombreuses applications, pour certaines d’entre elles, ces bases de données traditionnelles n’offrent pas les mêmes avantages que les bases de données non relationnelles.
Les bases de données relationnelles organisent les données en lignes et en colonnes, et utilisent le langage SQL (Structured Query Language) dans leur traitement. Elles constituent un excellent choix pour les applications transactionnelles qui nécessitent des garanties de fiabilité et des garanties ACID (atomicité, cohérence, isolation et durabilité). Cela garantit également l'efficacité et la simplicité du langage SQL pour les requêtes et les rapports. Mais ces bases de données relationnelles ont un coût : elles nécessitent des administrateurs de bases de données le respect de structures relationnelles prédéfinies et au fur et à mesure qu’augmentent les quantités de données et les charges de travail, elles deviennent plus coûteuses. Pourtant, elles sont idéales pour – et continuent d’alimenter – de nombreuses applications stratégiques.
En comparaison, les bases de données non relationnelles, y compris les bases de données de de type documents, de type objets, de type graphe par exemple, offrent certains avantages par rapport aux bases de données relationnelles, notamment en termes de flexibilité et d'évolutivité. Les administrateurs ne sont pas obligés de créer de schémas prédéfinis, et les développeurs d'applications peuvent stocker et gérer les données beaucoup plus facilement, sans se soucier de la cartographie des structures de données fixes.
Heureusement, tous ces différents types de technologies de stockage sont matures, robustes et disponibles. Elles offrent ainsi aux développeurs un riche éventail de fonctionnalités qu’ils peuvent exploiter dans leurs applications.
Aujourd’hui, il existe des centaines de bases de données disponibles sur le marché. Les bases de données non relationnelles représentent environ la moitié de toutes les bases de données déployées en production.
Cependant, intégrer plusieurs technologies de bases de données dans une application n'est pas toujours simple.
Une approche multi-modèle – appelée persistance polyglotte – consiste à utiliser différentes bases de données pour prendre en charge chaque type de structure de données. Il s'agit de la meilleure approche. En revanche, mettre en œuvre, synchroniser et maintenir différents systèmes de bases de données tout au long du cycle de vie de l'application, représentent une tâche complexe et est sujette aux erreurs.
Une autre approche propose d’utiliser ce que l'industrie appelle une base de données multi-modèle, c'est-à-dire une base de données qui prend en charge diverses représentations des données dans un même « produit ». Toutefois, toutes les bases de données multi-modèles ne sont pas identiques. Certaines adhèrent au paradigme polyglotte et emploient un certain nombre de moteurs de base de données distincts pour différentes représentations de données, entraînant alors la duplication des données et le besoin d’établir une cartographie et une intégration entre les différents dépôt de données. D'autres encore, prennent en charge différents modèles au sein du moteur, mais pas sur les mêmes données.
Chez InterSystems, nous avons développé une approche simplifiée de la gestion des bases de données multi-modèle. Notre produit, InterSystems IRIS Data PlatformTM, stocke une représentation unique des données et exploite un seul moteur de base de données. Celui-ci prend en charge l'accès (relationnel et non relationnel) aux données et leur manipulation sans duplication. Pour l'accès non relationnel, il est inutile de disposer d'un schéma prédéfini. Il offre des garanties des propriétés ACID transactionnelles, peut évoluer verticalement et horizontalement, et prend en charge les environnements cloud sur site public et privé, ainsi que les environnements de déploiement hybrides (public/public, public/privé, cloud/sur site). Il est ainsi possible d’accéder aux mêmes données et de les manipuler à l'aide du langage SQL, ou sous forme de documents, d'objets ou de clé-valeur. Les développeurs d'applications n'ont pas besoin de travailler avec plusieurs bases de données ni d'intégrer et de synchroniser les données dans plusieurs dépôt de données.
Notre approche du multi-modèle offre les avantages des technologies relationnelles et non relationnelles, sans en avoir les inconvénients, ni les complexités ou inefficacités, associées à la persistance polyglotte. Le tout dans un seul moteur de stockage que nous avons construit de A à Z.
Pour en savoir plus sur InterSystems IRIS