En un an, la base de données cloud Azure Cosmos DB de Microsoft a réalisé une percée surprenante au classement des moteurs de bases de données réalisé par le site db-engines.com. En quelques mois, elle a gagné 27 places en se plaçant au 31ème rang tandis que, dans le même temps, la base de données cloud DynamoDB d’AWS est restée à la 22ème place qu’elle occupait déjà un an plus tôt. En y regardant de plus près, ces deux fournisseurs concurrents ont une approche très différente sur les données. AWS a mis à disposition plusieurs options performantes : Redshift pour couvrir l’entrepôt de données, Aurora/RDS pour les charges de travail relationnelles classiques et DynamoDB pour le NoSQL. Tandis qu'vec Cosmos DB, Microsoft va dans la direction opposée avec une approche unique (one-size-fits-all) qui semble plaire.
Le fournisseur des services cloud Azure a lancé officiellement cette base de données sur sa conférence Build en mai 2017. Mais celle-ci est en réalité une évolution de sa base DocumentDB qui existe depuis plusieurs années. Dans un billet, Dharma Shukla, ingénieur chez Microsoft, rappelait en mai qu’Azure Cosmos DB avait commencé son parcours dès 2010 sous la forme du projet Florence destiné à résoudre les difficultés rencontrées sur les applications de grande taille au sein même de Microsoft. « Constatant que les défis liés au déploiement d’applications mondialement distribuées ne constituaient pas un problème unique à Microsoft, en 2015, nous avons commencé à fournir cette technologie aux développeurs d’Azure sous la forme d’Azure DocumentDB. Nous lui avons depuis ajouté des fonctionnalités et capacités significatives ». Il en est résulté Cosmos DB que Dharma Shukla décrit comme une évolution significative dans les bases de données cloud pouvant se mettre à l’échelle de façon distribuée au niveau mondial.
Oracle, toujours 100 fois plus populaire que Cosmos DB
Bien que la percée des bases cloud soit significative, on retrouve immuablement aux 3 premières places du classement de DB-Engines les bases relationnelles Oracle, MySQL et Microsoft SQL Server. Même si les solutions NoSQL ont commencé à bousculer un peu les choses (avec l’exemple notable de MongoDB, orienté document et pourvu d’un schéma de données flexible), les bases de données restent assurément l’un des derniers bastions qui résistent au changement dans l’entreprise eu égard aux risques qu’une migration mal maîtrisée pourrait générer. Malgré cela, les propositions d’acteurs bien établis comme Amazon Web Services, Microsoft et - de plus en plus - Google, pourraient bien avoir raison de leur résistance.
Le classement de DB-Engines agrège différentes mesures de popularité des bases de données dont les offres d’emploi, les discussions techniques sur Stack Overflow, le nombre de mentions sur les sites web, les profils professionnels et les réseaux sociaux, ainsi que les recherches faites sur le moteur de Google. En dépit de la prédominance incontestée d’Oracle, MySQL et Microsoft SQL, les bases de données cloud ont gagné du terrain rapidement, même si une base comme Oracle reste plus de 100 fois plus populaire que Cosmos DB par exemple. En tout état de cause, c’est sur les applications créées pour le cloud que les bases « cloud-first » dominent. C’est un point important à prendre en compte car il y a un mouvement prononcé de migration – qui s’accélère – depuis les datacenters privés vers les environnements de cloud public, souligne Thomas Bittman, analyste du cabinet Gartner.
Une progression x20 sur les bases du cloud public
Dans les entreprises, les projets de modernisation des anciennes applications se font plutôt dans des clouds privés, alors que les nouveaux projets vont plutôt vers le cloud public. Et ces derniers progressent à un rythme beaucoup plus soutenu. L’analyste constate une progression multipliée par 20 sur le cloud public alors qu’elle est simplement multipliée par 3 du côté des datacenters privés. Bien sûr, le volume des charges de travail héritées des anciennes applications est encore très supérieur à celles des applications cloud, mais cela ne va pas durer. Dans ce contexte, il est donc intéressant de noter que, parmi les nouvelles bases de données cloud, Cosmos DB a distancé tous ses concurrents. Dans le classement et même si ce n’est que symbolique, elle a récemment doublé BigQuery de Google et Redshift d’Amazon qui se trouvent sur le marché depuis bien plus longtemps. Au rythme où elle avance, Cosmos DB pourrait bien dépasser Amazon DynamoDB en 2018 et même, au sein d’Azure, prendre le pas sur SQL Database. C’est impressionnant.
La raison pour laquelle Cosmos DB prend de l’ascendant pourrait s’expliquer par un intérêt déclinant de la part des développeurs pour la « persistance polyglotte » consistant à faire coexister différentes technologies en choisissant la plus adaptée aux différents problèmes rencontrés. En 2011, Martin Fowler, responsable scientifique de Thoughtworks, l’avait ainsi décrite : « toute entreprise de taille respectable utilisera une variété de technologies de stockage de données pour différentes natures de données ». Plutôt que de forcer les données à rentrer dans un modèle relationnel, par exemple, une entreprise choisira de préférence une base orientée colonnes (comme Appache Cassandra) pour certaines parties d’une application, une base de données graphe (telle Neo4j) pour d’autres parties, et par ailleurs une base relationnelle (au hasard, PostgreSQL, une solution ancienne toujours très tendance) pour d’autres charges de travail. La popularité de bases de données comme MongoDB (qui s'est introduit en bourse en octobre) est une indication très claire que, en fait, nous vivons effectivement dans un monde de plus en plus polyglotte.
Plusieurs modèles dans une même base de données
Ce que Microsoft a réussi avec Cosmos DB, c’est que les développeurs peuvent vouloir conserver leur persistance polyglotte dans un seul endroit. Ainsi que l’a mentionné Serdar Yegulalp d'Infoworld, « avec Cosmos DB, Microsoft propose différents modèles de consistance dans la même base de données, donc le choix du modèle peut devenir une fonction de la charge de travail plutôt qu’un produit ». C’est très important. Tout aussi importante est l’approche multi-modèle qui fait d’Azure Cosmos DB une sorte de solution polyvalente. « Ce que Microsoft apporte, ce n’est pas un type particulier de base de données. C’est un back end universel pour différents sortes de bases de données – susceptibles d’inclure des styles de bases de données futures qui n’ont pas encore été inventées », dit encore Serdar Yegulalp. Cela permet à un développeur d’adopter Cosmos DB pour une large gamme de besoins applicatifs, plutôt que de devoir apprendre à manier différentes solutions. Il y a un risque que l’approche généraliste de Cosmos DB en fasse une option adaptable à toutes sortes d’applications plutôt que l’outil le mieux adapté à une tâche particulière. A en juger par sa popularité, les développeurs ne le voient pas de cet œil.
Tout cela pose les jalons pour un affrontement des plus classiques entre les deux premiers fournisseurs du marché cloud : Amazon et Microsoft. Sur sa récente conférence Re:Invent, en décembre, Amazon Web Services a annoncé de nouvelles technologies de base de données dont Neptune, une base orientée graphe, et présenté plus d’évolutions en différents produits que la plupart des entreprises pourraient espérer créer en une seule existence. Par contraste, Microsoft, semble mettre les bouchées sur Cosmos DB pour en faire la base par défaut à laquelle un développeur pourrait penser pour n’importe quelle application.
Oracle Database n'est pas qu'une base relationnelle.
Signaler un abusElle peut aussi être utilisée en tant que base NoSQL, comme Document/Content Store, comme base de Graphes, avec un Column Store et même les 5 à la fois au sein d'une même base de données Oracle ! C'est une base de données "généraliste" et plus seulement relationnelle.