Společnost Microsoft oznámila uvolnění kódu projektu DocumentDB, který může být využíván jako samostatná NoSQL databáze, jako platforma pro vytváření vlastních úložišť nebo jako doplněk pro ukládání dat ve formátu BSON v databázi PostgreSQL. V praxi se DocumentDB používá ve společnosti Microsoft jako základ produktu „Azure Cosmos DB for MongoDB“, který poskytuje rozhraní kompatibilní s dokumentově orientovanou databází MongoDB. Kód projektu je napsán v jazyce C a je distribuován pod licencí MIT. Motor DocumentDB je realizován jako nadstavba nad databází PostgreSQL.
Stejně jako v MongoDB se pro ukládání strukturovaných dokumentů v DocumentDB používá formát podobný JSON, BSON (Binární JSON), který umožňuje vytvářet hierarchické struktury, ve kterých se jedny dokumenty a pole mohou vkládat do jiných dokumentů a polí. Klíčovým rozdílem od JSON je využití serializace dat do binárního formátu. Projekt poskytuje jak NoSQL operace pro vytváření, čtení, aktualizaci a mazání dat ve formátu BSON, tak API pro standardní PostgreSQL (DocumentDB může být považován za variantu PostgreSQL s podporou BSON). V DocumentDB mohou být využity možnosti fulltextového vyhledávání, operace na vektorových a geospatialních datových typech.
Projekt se skládá ze dvou komponent:
- pg_documentdb_core — rozšíření pro PostgreSQL s implementací typu BSON a operacemi pro práci s daty BSON v PostgreSQL.
- pg_documentdb — veřejné API DocumentDB se základními operacemi pro práci s dokumenty ve formátu BSON, zpracování dotazů a správu indexů.
První vydání DocumentDB poskytuje podporu pro operace CRUD (vytváření, čtení, aktualizace, mazání), indexy pro jednotlivá pole BSON, indexy pro fulltextové vyhledávání (kompatibilní s RUM), vektorové a geospatialní dotazy (kompatibilní s pg_vector a postgis), možnosti pro vytváření dotazů a agregaci dat BSON.
Na používání DocumentDB už přešel projekt FerretDB, který vyvíjí implementaci SGBD MongoDB na bázi SGBD PostgreSQL. FerretDB umožňuje bez změn v kódu aplikací nahradit proprietární dokumentově orientovanou SGBD MongoDB plně otevřeným softwarovým stackem založeným na PostgreSQL. Potřeba výměny MongoDB je vysvětlena přechodem této SGBD na licenci SSPL, která vychází z licence AGPLv3, ale není otevřená, protože obsahuje diskriminační požadavek dodání pod licencí SSPL nejen kódu samotné aplikace, ale i zdrojových textů všech komponent zapojených do poskytování cloudové služby.
Původně se práce FerretDB soustředila na převod dotazů na MongoDB na SQL dotazy k PostgreSQL, ale od verze FerretDB 2.0, která je ve stádiu kandidáta na vydání, bylo pro implementaci podpory formátu BSON využito rozšíření PostgreSQL DocumentDB. Přechod na používání DocumentDB umožnil více než dvacetkrát zvýšit výkon FerretDB pro některé typy zátěže. Mezi další novinky verze FerretDB 2.0 patří zlepšení kompatibility s MongoDB, možnost replikace a podpora vektorového vyhledávání. Kód FerretDB je napsán v jazyce Go a je distribuován pod licencí Apache 2.0.
Zdroj: opennet.ru
