Microsoft teatas DocumentDB projekti lähtekoodi avamisest, mida saab kasutada iseseisva NoSQL andmebaasina, enda andmesalvestussüsteemide loomise platvormina või andmete salvestamise lisaelemendina BSON formaadis PostgreSQL andmebaasis. Praktikas kasutatakse DocumentDB-d Microsoftis toote "Azure Cosmos DB for MongoDB" aluseks, pakkudes MongoDB dokumentide andmebaasiga ühilduvat liidest. Projekti kood on kirjutatud C keeles ja jagatakse MIT litsentsi alusel. DocumentDB mootor on ellu kutsutud PostgreSQL andmebaasi kihina.
Nagu MongoDB-s kasutatakse DocumentDB-s struktureeritud dokumentide hoidmiseks JSON-sarnast BSON (Binary JSON) formaati, mis võimaldab luua hierarhilisi struktuure, kus dokumendid ja massiivid saavad olla sisse ehitatud teistesse dokumentidesse ja massiividesse. Peamine erinevus JSON-iga on andmete serialiseerimise kasutamine binaarsete представлений. Projekt pakub nii NoSQL-operatione dokumentide loomiseks, lugemiseks, värskendamiseks ja kustutamiseks BSON formaadis, kui ka API-d tavalise PostgreSQL jaoks (DocumentDB-d võib pidada PostgreSQL-i variandiks, mis toetab BSON-i). DocumentDB-s on saadaval täisteksti otsimise võimed, vektori- ja georuumiliste andmetüüpidega seotud toimingud.
Projekt koosneb kahest komponendist:
- pg_documentdb_core — PostgreSQL-i laiendus BSON-tüübi ja toimingute rakendamisega, et töötada PostgreSQL-is BSON-andmetega.
- pg_documentdb — avalik API DocumentDB-le, mis sisaldab põhitoiminguid BSON-formaadis dokumentidega töötamiseks, päringute töötlemiseks ja indeksite haldamiseks.
Esimene versioon DocumentDB toetab CRUD-operatsioone (loomine, lugemine, uuendamine, kustutamine), BSONi eraldi väljade indekseid, täielikku teksti otsimise indekseid (ühildub RUM-iga), vektorite ja georuumilisi päringuid (ühildub pg_vectori ja postgis'iga), samuti andmete BSON-päringute ja agregatsiooni võimalusi.
DocumentDB-le on juba üle läinud projekt FerretDB, mis arendab MongoDB andmebaasi rakendust PostgreSQLi baasil. FerretDB võimaldab ilma muudatusteta rakenduste koodis asendada MongoDB proprietaarset dokumentide põhist andmebaasi täielikult avatud tarkvara tehnoloogiaga, mis põhineb PostgreSQLil. Vajadus MongoDB asendamiseks tuleneb sellest, et see andmebaas on läinud üle SSPL-litsentsile, mis põhineb AGPLv3-litsentsil, kuid ei ole avatud, kuna sisaldab diskrimineerivat nõuet anda litsentsi järgi SSPL mitte ainult rakenduse koodi, vaid ka kõikide komponentide allikaid, mis on seotud pilveteenuse pakkumisega.
Alguses piirdus FerretDB MongoDB päringute SQL-päringuteks PostgreSQL-i, kuid alates FerretDB 2.0 versioonist, mis on praegu kandidaat versiooniks, on BSON formaadi toe saavutamiseks kasutusele võetud PostgreSQL-i laiendus DocumentDB. DocumentDB kasutusele võtmine võimaldas FerretDB jõudlust teatud koormuste korral suurendada rohkem kui 20 korda. FerretDB 2.0 muud uuendused hõlmavad paremat ühilduvust MongoDB-ga, replikatsiooni võimalust ja vektorsete päringute toetust. FerretDB kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi alusel.
Allikas: opennet.ru
