MangoDB je modernizovan i sada prelazi u FerretDB

Nedavnodana objavljena je vijest o pokretanju projekta FerretDB, (ranije MangoDB), koji vam omogućava da zamenite MongoDB-ov dokument orijentisan DBMS sa PostgreSQL bez ikakvih promena u kodu vaše aplikacije.

FerretDB je implementiran kao proxy server koji prevodi pozive MongoDB u SQL upite za PostgreSQL, omogućavajući vam da koristite PostgreSQL kao stvarnu pohranu.

FerretDB (ranije MangoDB) je osnovan da postane 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 mehanizam baze podataka.

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

Ciljna publika za FerretDB su korisnici koji ne koriste napredne funkcije MongoDB-a u svojim aplikacijama, ali žele da koriste potpuno otvoren softverski stog.

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

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

Većini korisnika MongoDB-a nisu potrebne mnoge od naprednih funkcija 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 JSON formatu, ima prilično fleksibilan jezik za generiranje upita, može kreirati indekse za različite pohranjene atribute, pruža efikasno binarno skladištenje 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 je navedeno da potpuno redizajniran način na koji se preuzimaju PostgreSQL podaci. Ranije, za svaki dolazni MongoDB zahtjev, generiran je SQL za PostgreSQL upit, koristeći funkcije za rad sa 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 prilikom upoređivanja i naručivanja različitih tipova. Da bi se riješio ovaj problem, uzorak suvišnih podataka se sada izdvaja iz PostgreSQL-a i 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 divergencija 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 sa MongoDB, a performanse su i dalje potisnute u drugi plan.

Od funkcionalnih promjena u novoj verziji, postoji podrška za sve bitne operatore, operator poređenja "$e", kao i operatore "$elemMatch" i "$bitsAllClear".

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


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.