Objavljeno je izdanje projekta FerretDB 1.0 koji vam omogućuje zamjenu DBMS-a MongoDB-a orijentiranog na dokumente s PostgreSQL-om bez izmjena koda aplikacije. FerretDB je implementiran kao proxy poslužitelj koji prevodi pozive prema MongoDB-u u SQL upite prema PostgreSQL-u, što vam omogućuje da koristite PostgreSQL kao stvarnu pohranu. Verzija 1.0 označena je kao prvo stabilno izdanje spremno za opću upotrebu. Kod je napisan u Go i distribuiran pod licencom Apache 2.0.
Primarna ciljna publika FerretDB-a su korisnici koji ne koriste napredne mogućnosti MongoDB-a u svojim aplikacijama, već žele koristiti potpuno otvoreni softverski skup. U svojoj trenutnoj fazi razvoja, FerretDB podržava podskup MongoDB mogućnosti koje se najčešće koriste u tipičnim aplikacijama. Potreba za implementacijom FerretDB-a može se pojaviti u vezi s prijelazom MongoDB-a na vlasničku SSPL licencu, koja se temelji na AGPLv3 licenci, ali nije otvorena, budući da sadrži diskriminirajući zahtjev za isporuku pod SSPL licencom ne samo aplikacijskog koda sebe, ali i izvorne kodove svih komponenti uključenih u pružanje usluge u oblaku.
MongoDB zauzima nišu između brzih i skalabilnih sustava koji rade s podacima u formatu ključ/vrijednost i relacijskih DBMS-ova koji su funkcionalni i jednostavni za formuliranje upita. MongoDB podržava pohranu dokumenata u formatu sličnom JSON-u, ima prilično fleksibilan jezik za generiranje upita, može kreirati indekse za razne pohranjene atribute, učinkovito omogućuje pohranu velikih binarnih objekata, podržava bilježenje operacija za promjenu i dodavanje podataka u bazu podataka, može rad u skladu s paradigmom Map/Reduce, podržava replikaciju i konstrukciju konfiguracija otpornih na pogreške.
Među promjenama u FerretDB 1.0:
- Naredbe createIndexes i dropIndexes implementirane su za stvaranje i brisanje jednog ili više indeksa u zbirci.
- Naredba getMore implementirana je za prikaz novog dijela rezultata dobivenog izvođenjem naredbi koje vraćaju kursor, kao što su find i aggregate.
- Dodana je podrška za operator agregacije $sum za izračunavanje zbroja vrijednosti grupe.
- Dodana podrška za operatore $limit i $skip za ograničavanje broja i preskakanje dokumenata tijekom agregacije.
- Dodana podrška za operator $count za brojanje dokumenata tijekom agregacije.
- Dodana podrška za operator $unwind za raščlanjivanje polja niza u dolaznim dokumentima i generiranje popisa s zasebnim dokumentom za svaki element niza.
- Dodana djelomična podrška za naredbe collStats, dbStats i dataSize za dobivanje statistike o kolekciji i bazi podataka, kao i veličini podataka.
Izvor: opennet.ru