MangoDB je moderniziran i sada se mijenja u FerretDB

nedavnodana objavljena je vijest o pokretanju projekta FerretDB, (bivši MangoDB), koji vam omogućuje zamjenu MongoDB-ovog dokumentno orijentiranog DBMS-a s PostgreSQL-om bez ikakvih promjena u kodu aplikacije.

FerretDB je implementiran kao proxy poslužitelj koji prevodi pozive MongoDB u SQL upite za PostgreSQL, omogućujući vam korištenje PostgreSQL-a kao stvarne pohrane.

FerretDB (bivši MangoDB) osnovan je kako bi postao de facto zamjena otvorenog koda za MongoDB. FerretDB je proxy otvorenog koda koji pretvara upite MongoDB žičanog protokola u SQL, koristeći PostgreSQL kao motor baze podataka.

Potreba za migracijom može se pojaviti zbog prijelaza MongoDB-a na neslobodnu SSPL licencu, koja se temelji na AGPLv3 licenci, ali nije otvorenog koda, jer sadrži diskriminirajući zahtjev da se pod SSPL licencom pruži ne samo aplikacija samog koda, ali i izvornih kodova svih komponenti uključenih u pružanje usluge u oblaku.

Ciljana publika za FerretDB su korisnici koji ne koriste napredne značajke MongoDB-a u svojim aplikacijama, ali žele koristiti potpuno otvoren softverski stog.

U trenutnoj fazi razvoja, FerretDB još uvijek podržava samo dio MongoDB značajki koji se najčešće koriste u tipičnim aplikacijama. U budućnosti planiraju postići punu podršku za drajvere za MongoDB i pružiti mogućnost korištenja FerretDB-a kao transparentne zamjene za MongoDB.

Treba to zapamtiti MongoDB zauzima nišu među brzim i skalabilnim sustavima koji rade na podacima u formatu ključ/vrijednost i relacijski DBMS, funkcionalni i praktični u generiranju upita.

Većina korisnika MongoDB-a ne treba mnoge napredne značajke koje MongoDB nudi; međutim, potrebno im je rješenje baze podataka otvorenog koda jednostavno za korištenje. Prepoznajući to, FerretDB je tu da popuni tu prazninu.

MongoDB podržava pohranjivanje dokumenata u formatu sličnom JSON-u, ima prilično fleksibilan jezik za generiranje upita, može kreirati indekse za različite pohranjene atribute, pruža učinkovitu binarnu pohranu velikih objekata, podržava bilježenje operacija za promjenu i dodavanje podataka prema bazi podataka, može raditi prema paradigmi Map/Reduce, podržava replikaciju i izgradnju konfiguracija otpornih na greške.

U izdanju FerretDB 0.1.0 navedeno je da potpuno redizajniran način na koji se dohvaćaju PostgreSQL podaci. Prije, za svaki dolazni MongoDB zahtjev, generiran je SQL za PostgreSQL upit, koristeći funkcije za rad s JSON formatom i filtriranje rezultata na strani PostgreSQL.

Zbog razlika u semantici PostgreSQL i MongoDB json funkcija, došlo je do neslaganja u ponašanju pri usporedbi i redoslijedu različitih tipova. Kako bi se riješio ovaj problem, uzorak suvišnih podataka sada se izdvaja iz PostgreSQL-a, a filtriranje rezultata se vrši na strani FerretDB, što je omogućilo ponavljanje ponašanja MongoDB-a u većini situacija.

Cijena povećane kompatibilnosti bila je kazna performansi, za koje se očekuje da će u budućim izdanjima biti nadoknađeno selektivnim filtriranjem na FerretDB strani samo upita za koje postoji odstupanja u ponašanju.

Na primjer, upit "db.collection.find({_id: 'some-id-value'})" može se u potpunosti obraditi u PostgreSQL-u. Glavni cilj projekta u ovoj fazi razvoja je postizanje kompatibilnosti s MongoDB-om, a performanse su još uvijek potisnute u drugi plan.

Od funkcionalnih promjena u novoj verziji, tu je podrška za sve bitne operatore, operator usporedbe "$e", kao i operatore "$elemMatch" i "$bitsAllClear".

Konačno za one koje zanima više o tome, trebali bi znati da je kod napisan u Go i distribuira se pod licencom Apache 2.0 i možete provjeriti njegov kod na sljedećoj poveznici.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.