Microsoft a annoncĂ© l'ouverture du code du projet DocumentDB, qui peut ĂȘtre utilisĂ© comme une base de donnĂ©es NoSQL autonome, comme une plateforme pour crĂ©er des systĂšmes de stockage personnalisĂ©s ou comme un complĂ©ment pour le stockage de donnĂ©es au format BSON dans la base de donnĂ©es PostgreSQL. En pratique, DocumentDB est utilisĂ© par Microsoft comme base du produit « Azure Cosmos DB for MongoDB », offrant une interface compatible avec la base de donnĂ©es orientĂ©e documents MongoDB. Le code du projet est Ă©crit en langage C et est distribuĂ© sous licence MIT. Le moteur DocumentDB est implĂ©mentĂ© sous la forme d'une surcouche Ă la base de donnĂ©es PostgreSQL.
Tout comme dans MongoDB, pour stocker des documents structurĂ©s dans DocumentDB, un format similaire Ă JSON appelĂ© BSON (Binary JSON) est utilisĂ©, permettant de crĂ©er des structures hiĂ©rarchiques dans lesquelles certains documents et tableaux peuvent ĂȘtre imbriquĂ©s dans d'autres documents et tableaux. La diffĂ©rence clĂ© avec JSON rĂ©side dans l'utilisation d'une sĂ©rialisation des donnĂ©es en reprĂ©sentation binaire. Le projet offre Ă la fois des opĂ©rations NoSQL pour crĂ©er, lire, mettre Ă jour et supprimer des donnĂ©es au format BSON, ainsi qu'une API pour PostgreSQL standard (DocumentDB peut ĂȘtre considĂ©rĂ© comme une version de PostgreSQL prenant en charge BSON). DocumentDB peut utiliser des fonctionnalitĂ©s de recherche en texte intĂ©gral, des opĂ©rations sur des types de donnĂ©es vectoriels et gĂ©ospatiaux.
Le projet se compose de deux composants :
- pg_documentdb_core â une extension pour PostgreSQL implĂ©mentant le type BSON et des opĂ©rations pour travailler avec des donnĂ©es BSON dans PostgreSQL.
- pg_documentdb â API publique de DocumentDB avec des opĂ©rations de base pour travailler avec des documents au format BSON, traiter des requĂȘtes et gĂ©rer des index.
Le premier lancement de DocumentDB fournit un support pour les opĂ©rations CRUD (crĂ©ation, lecture, mise Ă jour, suppression), des index pour des champs BSON individuels, des index pour la recherche en texte intĂ©gral (compatibles avec RUM), des requĂȘtes vectorielles et gĂ©ospatiales (compatibles avec pg_vector et postgis), ainsi que des capacitĂ©s de formulation de requĂȘtes et d'agrĂ©gation des donnĂ©es BSON.
Le projet FerretDB, qui dĂ©veloppe une implĂ©mentation du SGBD MongoDB basĂ©e sur le SGBD PostgreSQL, a dĂ©jĂ migrĂ© vers l'utilisation de DocumentDB. FerretDB permet de remplacer la base de donnĂ©es documentaire propriĂ©taire MongoDB par une pile logicielle entiĂšrement open-source, sans apporter de modifications au code des applications, en s'appuyant sur PostgreSQL. La nĂ©cessitĂ© de remplacer MongoDB rĂ©sulte de son passage Ă la licence SSPL, qui est basĂ©e sur la licence AGPLv3 mais n'est pas ouverte, car elle contient des exigences discriminatoires concernant la distribution non seulement du code de l'application elle-mĂȘme, mais Ă©galement du code source de tous les composants impliquĂ©s dans la fourniture du service cloud.
Initialement, FerretDB consistait Ă traduire les requĂȘtes adressĂ©es Ă MongoDB en requĂȘtes SQL vers PostgreSQL, mais depuis la version FerretDB 2.0, qui est en phase de candidat de publication, l'extension DocumentDB de PostgreSQL a Ă©tĂ© mise en Ćuvre pour supporter le format BSON. Le passage Ă DocumentDB a permis d'augmenter la performance de FerretDB de plus de 20 fois pour certains types de charges. Parmi les autres nouveautĂ©s de FerretDB 2.0, on note une amĂ©lioration de la compatibilitĂ© avec MongoDB, la possibilitĂ© de rĂ©plication et le support de la recherche vectorielle. Le code de FerretDB est Ă©crit en Go et est distribuĂ© sous la licence Apache 2.0.
Source : opennet.ru
