Microsoft je objavila odpiranje kode projekta DocumentDB, ki se lahko uporablja kot samostojna NoSQL baza podatkov, kot platforma za ustvarjanje lastnih sistemov shranjevanja ali kot dodatek za shranjevanje podatkov v formatu BSON v bazi podatkov PostgreSQL. V praksi se DocumentDB uporablja v podjetju Microsoft kot osnova za izdelek „Azure Cosmos DB for MongoDB“, ki zagotavlja vmesnik, združljiv z dokumentno usmerjeno bazo podatkov MongoDB. Koda projekta je napisana v programskem jeziku C in se distribuira pod licenco MIT. Motor DocumentDB je implementiran v obliki nadgradnje nad bazo podatkov PostgreSQL.
Kot v MongoDB za shranjevanje strukturiranih dokumentov v DocumentDB uporabljamo JSON-podobno obliko BSON (Binary JSON), ki omogoča ustvarjanje hierarhičnih struktur, v katerih se lahko eni dokumenti in nizi vgrajujejo v druge dokumente in nize. Ključna razlika od JSON-a je uporaba serializacije podatkov v binarni prikaz. Projekt nudi tako NoSQL operacije za ustvarjanje, branje, posodabljanje in brisanje podatkov v formatu BSON, kot tudi API za standardni PostgreSQL (DocumentDB lahko obravnavamo kot različico PostgreSQL z podporo za BSON). V DocumentDB se lahko uporabljajo možnosti polno besednega iskanja, operacije z vektorskimi in geospatialnimi tipi podatkov.
Projekt je sestavljen iz dveh komponent:
- pg_documentdb_core — razširitev za PostgreSQL z implementacijo tipa BSON in operacijami za delo s podatki BSON v PostgreSQL.
- pg_documentdb — javni API DocumentDB z osnovnimi operacijami za delo z dokumenti v formatu BSON, obdelavo poizvedb in upravljanje indeksov.
Prva izdaja DocumentDB nudi podporo operacijam CRUD (ustvarjanje, branje, posodabljanje, brisanje), indekse za posamezna polja BSON, indekse za polno besedno iskanje (združljive z RUM), vektorske in geospatialne poizvedbe (združljive s pg_vector in postgis), možnosti za oblikovanje poizvedb in agregiranje podatkov BSON.
Projekt FerretDB, ki se ukvarja z izvajanjem NO-SQL podatkovne baze MongoDB na osnovi podatkovne baze PostgreSQL, se je že preusmeril na uporabo DocumentDB. FerretDB omogoča, da se brez spreminjanja kode aplikacij zamenja proprietarna dokumentno usmerjena podatkovna baza MongoDB s popolnoma odprtim programski skladom, osnovanim na PostgreSQL. Potreba po zamenjavi MongoDB je pojasnjena s prehodom te podatkovne baze na licenco SSPL, ki temelji na licenci AGPLv3, vendar ni odprta, saj vsebuje diskriminatorno zahtevo po dostavi pod licenco SSPL ne le kode same aplikacije, temveč tudi izvornih kod vseh komponent, vključenih v zagotavljanje oblačne storitve.
Sprva je delo FerretDB obsegalo prevajanje poizvedb iz MongoDB v SQL poizvedbe v PostgreSQL, vendar je z različico FerretDB 2.0, ki je v fazi kandidata za izdajo, bilo za izvajanje podpore za format BSON vključeno razširitev DocumentDB za PostgreSQL. Prehod na uporabo DocumentDB je omogočil več kot 20-kratno izboljšanje zmogljivosti FerretDB za nekatere vrste obremenitev. Med druge novosti FerretDB 2.0 spadajo izboljšana združljivost z MongoDB, možnost replikacije in podpora za iskanje vektorskih podatkov. Koda FerretDB je napisana v jeziku Go in je na voljo pod licenco Apache 2.0.
Izvor: opennet.ru
