Si vous commencez tout juste à explorer le monde des bases de données, vous savez probablement déjà deux choses : l’utilisation efficace des données est lucrative, et le choix d’une base de données pour gérer ces données peut s’avérer compliqué.
Il est vrai que la capacité des données à améliorer le chiffre d’affaires ne cesse de croître. Elles en effet permettent d’optimiser l’expérience utilisateur et d’alimenter le machine learning. Cependant, cela signifie également que des centaines de fournisseurs se disputent le marché du stockage et de l’analyse des données. Alors, comment faire votre choix ? Comme pour la plupart des choses dans la vie, il est important de bien se renseigner.
Voici donc un tour d’horizon du paysage des bases de données, et plus particulièrement de la manière dont elles s’intègrent dans un contexte professionnel. Nous commencerons par examiner en détail les licences et la modélisation des données.
Les licences logicielles sont, pour le moins, complexes. Il y a non seulement la question des droits de propriété intellectuelle (à ce sujet, je vous recommande de consulter « An Introduction to the Law and Economics of Intellectual Property » de Besen & Raskind et « Open Source Licensing: Software Freedom and Intellectual Property Law » de Rosen), mais aussi, plus précisément, les raisons pour lesquelles vous devriez vous intéresser aux licences ainsi qu’aux tendances du paysage des bases de données open source qui ont des implications pour votre entreprise.
Vous êtes prêt ?
Toutes les licences logicielles comportent des règles et des réglementations que vous devez respecter concernant l’utilisation de la technologie. Cela signifie que les licences des logiciels que vous adoptez peuvent avoir des répercussions tangibles sur la manière dont vous menez vos activités. Ignorer ou enfreindre ces règles peut vous exposer à des risques juridiques, à des pertes financières et, bien entendu, nuire à la réputation de votre entreprise. Que vous achetiez un logiciel ou adoptiez des technologies open source, la licence limitera en fin de compte l’utilisation du code d’une manière ou d’une autre. En résumé, vous devez prendre conscience de ces contraintes lorsque vous développez votre produit afin d’atténuer les risques juridiques à long terme.
Ensuite, il est important de garder à l’esprit que les licences ne sont pas immuables. En effet, à l’heure actuelle, de nombreuses entreprises qui soutiennent des projets de bases de données open source sont en train de modifier leurs licences afin de les rendre plus restrictives. Selon le cas, cela peut signifier que vous pourriez désormais faire l’objet de poursuites judiciaires si vous utilisiez une base de données gratuitement. Loin de nous l’intention de vous effrayer, nous souhaitons simplement vous inciter à faire preuve de vigilance. Face à ces changements, il est important de bien réagir. Dans certains cas, un changement de licence peut nécessiter de repenser l’architecture d’un service, d’adopter une autre base de données ou de conclure un accord commercial avec le fournisseur.
Les lecteurs assidus de Hacker News ou TechCrunch connaissent bien les débats autour des logiciels de bases de données open source et commerciaux. Voici en gros de quoi il s’agit : au cours des trois dernières années, un débat a éclaté en raison de la convergence de plusieurs facteurs, tels que la croissance des principaux fournisseurs de cloud public et le succès commercial, ou l’absence de succès, des fournisseurs de bases de données open source.
Cela dit, la relation entre les logiciels libres et les logiciels propriétaires n’est pas binaire, mais relève plutôt d’un spectre :
Remarque : la distance illustrée n’est pas scientifique, la relativité est plus importante.
Si l’on observe le spectre ci-dessus, à l’extrême gauche, on trouve les licences de logiciels de bases de données commerciales ou propriétaires, telles qu’Oracle, IBM Db2 et Microsoft SQL Server. Il s’agit de technologies puissantes et riches en fonctionnalités qui alimentent les workloads dans tous les secteurs verticaux. Lorsque vous achetez ce type de logiciel auprès d’un fournisseur ou sous forme de service cloud, vous payez un supplément pour avoir accès aux éléments suivants :
Support au niveau du code
Écosystème d’outils robuste
Services professionnels et consultants
Visibilité et influence sur la feuille de route de cette base de données
À droite, on trouve les logiciels du domaine public. Ceux-ci ne sont soumis à aucun droit d’auteur, ce qui signifie qu’ils peuvent être modifiés, distribués ou vendus sans restriction. Les projets situés à l’extrémité droite du spectre sont souvent régis par les normes d’un tiers impartial et objectif, tel que l’Apache Software Foundation ou la Linux Foundation.
L’Open Source Initiative (OSI) tient à jour une liste généralement acceptée de ce qui constitue ou non une licence open source. En général, la particularité des logiciels open source réside dans la possibilité de dupliquer le code pour ses propres besoins (« fork »). Cela signifie que si l’orientation du projet (logiciel) ne correspond pas à vos besoins ou à vos attentes, vous êtes libre de modifier ou d’éditer le code comme bon vous semble.
L’utilisation d’une technologie open source est particulièrement intéressante en raison de l’absence de frais de licence, d’une plus grande transparence en matière de développement et de l’innovation qui découle de la diversité des parties prenantes, des responsables de la maintenance et des problématiques. Par rapport aux logiciels commerciaux, cela signifie que vous renoncez à votre influence sur la feuille de route, aux garanties concernant les corrections de bugs ou les correctifs de sécurité, ainsi qu’aux contrats, mais vous bénéficiez en contrepartie d’une absence totale de dépendance vis-à-vis des fournisseurs et d’une plus grande flexibilité dans votre activité. Il s’agit là d’un compromis que vous et votre équipe devez examiner attentivement.
En suivant le parcours indiqué dans le tableau ci-dessus, de gauche à droite, on observe différents niveaux de permissivité des licences, comme Apache 2.0, MPL et GPL 3.0.
Apache 2.0 : Apache Cassandra, Apache CouchDB
Mozilla Public License : RabbitMQ
BSD : Redis
GPL 3.0 : Neo4j
Propriétaire : IBM Db2, Microsoft SQL Server
À la fin des années 2000, la plupart des nouveaux fournisseurs de bases de données se sont lancés sur le marché en mode « open source » afin de faciliter leur adoption et de gagner la confiance des développeurs. Vous connaissez peut-être des entreprises de ce type, comme Mongo Inc., Redis Labs et Elastic. Elles ont développé des projets communautaires tels que MongoDB, Redis et Elasticsearch, mais ont cherché à monétiser cet investissement avec des versions sous licence pour les entreprises, des implémentations cloud gérées ou des services professionnels.
Cependant, le changement de paradigme du cloud computing a rendu ce modèle économique précaire, car les principaux fournisseurs peuvent facilement fournir ces technologies sous forme de services gérés natifs de premier ordre. Ces offres sont fournies avec des intégrations convaincantes en matière de sécurité, de conformité, de surveillance et de journalisation sur leurs clouds respectifs, sans contrepartie financière garantie aux créateurs des logiciels.
Ces dernières années, les entreprises ont réévalué leur stratégie de commercialisation. Aujourd’hui, nous les voyons adopter des modèles de licence qui protègent leurs investissements en matière de développement. Par exemple, MongoDB, Redis Labs et Confluent, avec des degrés de sévérité variables, ont tous modifié les licences de certaines parties du code afin d’empêcher d’autres entreprises de les exploiter en tant que service sans recevoir de contrepartie financière.
Mais alors, que conseiller ? Excellente question.
Il existe de bonnes raisons d’utiliser à la fois des bases de données commerciales et/ou open source. L’important est de bien comprendre les implications pour vous et votre entreprise. Avant de développer une application, examinez la licence pour vous assurer que votre projet est conforme. Si vous recherchez au contraire une licence pour un projet open source, consultez la page Web de Github « Choisir une licence » (en anglais).
Les licences sont donc un élément important à prendre en compte, car personne ne souhaite être poursuivi en justice. Les familles de modèles de données constituent un autre élément important, mais pour une raison différente. Lorsque vous développez une application, il est utile de connaître les différents types de modèles de données afin de choisir l’outil le mieux adapté à votre projet.
Maintenant que vous en savez plus sur les licences, abordons un autre élément essentiel à prendre en compte lors du choix de votre base de données : les modèles de données.
Lorsque j’ai commencé à travailler chez IBM, j’avais besoin de me mettre rapidement à niveau, je me suis donc tourné vers l’ouvrage NoSQL Distilled de Martin Fowler.
Dans ses écrits, et dans le secteur en général, les bases de données sont généralement classées en cinq familles de « modèles de données » : orientés documents, clé-valeur, orientés graphes, relationnels et orientés colonnes. Voici un bref aperçu de chacune d’entre elles, avec des cas d’utilisation et des exemples propres à chaque base de données. Cela vous aidera à déterminer, en fonction de vos jeux de données et de vos besoins, la base de données qui vous convient.
Dans ce cas, les données sont modélisées dans des documents de type JSON, plutôt que dans des lignes et des colonnes. Ces bases de données privilégient naturellement la disponibilité plutôt que la cohérence transactionnelle. Elles se prêtent à la simplicité et à l’évolutivité, ainsi qu’à une itération rapide en développement.
Cas d’utilisation métier :
Applications mobiles nécessitant des itérations rapides
Journalisation d’événements, achats en ligne, gestion de contenu et traitement analytique approfondi
Catalogues de vente au détail avec attributs de produits
Exemples :
Firebase
Ce type de modèles constitue le type le plus élémentaire de base de données non relationnelle, dans lequel chaque élément est stocké sous la forme d’un nom d’attribut (appelé clé) associé à sa valeur correspondante.
Cas d’utilisation métier :
Stockage des préférences et des profils des utilisateurs
Recommandations de produits basées sur les données de navigation
Paniers d’achat
Exemples :
DynamoDB
Redis
etcd
Les données sont ici modélisées sous forme de sommets et d’arêtes (valeurs et connexions). À l’instar de la manière dont les humains pensent et traitent les informations, les bases de données orientées graphes rappellent les relations entre des unités de données distinctes. Elles rendent la persistance, l’exploration et la visualisation des données et des relations plus intuitives.
Cas d’utilisation métier :
Détection des fraudes
Moteurs de recommandation en temps réel
Master Data Management
Réseaux et opérations informatiques
Gestion des identités et des accès
Exemples :
Neo4j
AWS Neptune
Le modèle relationnel, introduit par R. F. Codd alors qu’il travaillait chez IBM, est la référence dans le secteur. Les données sont stockées dans des tables sous forme de lignes et de colonnes et disposent souvent de moteurs de requête sophistiqués pour l’analyse et l’exploration. Les bases de données relationnelles prennent en charge les garanties transactionnelles et la conformité ACID (atomicité, cohérence, isolation et durabilité), tandis que la cohérence de la plupart des bases de données des quatre autres familles est acquise à terme.
Cas d’utilisation métier :
E-commerce
Enterprise Resource Planning
Gestion de la relation client
Exemples :
IBM Db2
Ces bases de données permettent un accès très rapide aux données à l’aide d’une clé de ligne, d’un nom de colonne et d’un horodatage de cellule. Leur schéma flexible signifie que les colonnes n’ont pas besoin d’être cohérentes d’un enregistrement à l’autre, et que vous pouvez ajouter une colonne à des lignes spécifiques sans avoir à l’ajouter à chaque enregistrement. Les bases de données orientées colonnes sont dérivées du document BigTable de Google. Elles ne doivent pas être confondues avec les modèles de stockage orientés colonnes, qui sont plus adaptés aux technologies d’entrepôt de données et aux schémas d’accès analytiques en raison d’une meilleure compression des données sur disque et d’une utilisation plus efficace du processeur.
Cas d’utilisation métier :
Sécurité et analyse boursière
Analyse des parcours de navigation
IdO et télémétrie
Exemples :
Apache Cassandra
DataStax Enterprise
Google Cloud BigTable
En résumé, chaque modèle de données primaire présente des avantages et des inconvénients (et nous n’avons fait qu’effleurer le sujet ici). Toutefois, en cas de doute, optez pour une solution éprouvée et bien répandue telle que PostgreSQL. Pour en savoir plus sur l’archétype des familles de modèles de données, consultez l’ouvrage de Martin Fowler intitulé « NoSQL Distilled », en particulier les chapitres 8 à 11.
J’ai abordé plusieurs points ici, mais si vous souhaitez approfondir vos connaissances, voici quelques suggestions selon le temps dont vous disposez :
15 minutes : « Comment choisir une base de données » par Ben Anderson
15 minutes : « Bases de données SQL et NoSQL : quelle est la différence ? » par Ben Anderson et Brad Nicholson
3 heures : Jepsen analyses of distributed systems safety
1 semaine : Designing Data-Intensive Applications de Martin Kleppman.
Vous souhaitez vous lancer ? IBM Cloud propose une large gamme de services de bases de données gérées pour aider votre équipe à démarrer rapidement.