MangoDB ir modernizēts un tagad mainās uz FerretDB

Nesens dienās tika paziņota ziņa par projekta uzsākšanu FerretDB (agrāk MangoDB), kas ļauj aizstāt MongoDB uz dokumentiem orientēto DBVS ar PostgreSQL, neveicot nekādas izmaiņas lietojumprogrammas kodā.

FerretDB ir ieviests kā starpniekserveris, kas pārvērš MongoDB izsaukumus SQL vaicājumos uz PostgreSQL, ļaujot izmantot PostgreSQL kā faktisko krātuvi.

FerretDB (agrāk MangoDB) tika dibināts, lai kļūtu par MongoDB de facto atvērtā koda aizstājēju. FerretDB ir atvērtā pirmkoda starpniekserveris, kas pārveido MongoDB vadu protokola vaicājumus par SQL, izmantojot PostgreSQL kā datu bāzes dzinēju.

Migrācijas nepieciešamība var rasties saistībā ar MongoDB pāreju uz ne-bezmaksas SSPL licenci, kas ir balstīta uz AGPLv3 licenci, bet nav atvērtā koda, jo satur diskriminējošu prasību saskaņā ar SSPL licenci nodrošināt ne tikai aplikāciju. pašu kodu, bet arī visu mākoņpakalpojuma nodrošināšanā iesaistīto komponentu pirmkodus.

FerretDB mērķauditorija ir lietotāji, kuri neizmanto MongoDB uzlabotās funkcijas savās lietojumprogrammās, bet vēlas izmantot pilnībā atvērtu programmatūras steku.

Pašreizējā attīstības stadijā FerretDB tas joprojām atbalsta tikai daļu no MongoDB līdzekļiem kuras visbiežāk izmanto tipiskām lietojumprogrammām. Nākotnē viņi plāno panākt pilnīgu MongoDB draivera atbalstu un nodrošināt iespēju izmantot FerretDB kā pārredzamu MongoDB aizstājēju.

Būtu jāatceras, ka MongoDB ieņem nišu starp ātrām un mērogojamām sistēmām kas darbojas ar datiem atslēgas/vērtības formātā un relāciju DBVS, funkcionālas un ērtas vaicājumu ģenerēšanai.

Lielākajai daļai MongoDB lietotāju nav vajadzīgas daudzas MongoDB piedāvātās uzlabotās funkcijas; tomēr viņiem ir nepieciešams viegli lietojams atvērtā pirmkoda datu bāzes risinājums. To apzinoties, FerretDB ir šeit, lai aizpildītu šo plaisu.

MongoDB atbalsta dokumentu glabāšanu JSON līdzīgā formātā, ir diezgan elastīga valoda vaicājumu ģenerēšanai, var izveidot indeksus dažādiem saglabātajiem atribūtiem, nodrošina efektīvu bināro lielu objektu krātuvi, atbalsta operāciju reģistrēšanu, lai mainītu un pievienotu datus uz datu bāzi, tā var darboties saskaņā ar Map/Reduce paradigmu, tā atbalsta replikāciju un defektu izturīgu konfigurāciju izveidi.

FerretDB 0.1.0 laidienā ir atzīmēts, ka pilnībā pārveidots PostgreSQL datu izgūšanas veids. Iepriekš katram ienākošajam MongoDB pieprasījumam tika ģenerēts vaicājums no SQL uz PostgreSQL, izmantojot funkcijas darbam ar JSON formātu un filtrējot rezultātus PostgreSQL pusē.

Atšķirību dēļ PostgreSQL un MongoDB json funkciju semantikā, bija nesakritība uzvedībā, salīdzinot un pasūtot dažādus veidus. Lai atrisinātu šo problēmu, no PostgreSQL tagad tiek iegūts lieko datu paraugs un rezultātu filtrēšana tiek veikta FerretDB pusē, kas ļāva atkārtot MongoDB uzvedību lielākajā daļā situāciju.

Cena par paaugstinātu saderību bija sods par veiktspēju, kuru turpmākajos laidienos paredzēts kompensēt ar selektīvu filtrēšanu FerretDB pusē tikai tiem vaicājumiem, kuriem ir uzvedības atšķirības.

Piemēram, vaicājumu "db.collection.find({_id: 'some-id-value'})" var pilnībā apstrādāt programmā PostgreSQL. Projekta galvenais mērķis šajā izstrādes posmā ir panākt savietojamību ar MongoDB, un veiktspēja joprojām tiek atstāta otrajā plānā.

No funkcionālajām izmaiņām jaunajā versijā ir atbalsts visiem bitu operatoriem, salīdzināšanas operatoram "$e", kā arī operatoriem "$elemMatch" un "$bitsAllClear".

Beidzot tiem, kurus interesē uzzināt vairāk par to, viņiem jāzina, ka kods ir rakstīts Go un tiek izplatīts saskaņā ar Apache 2.0 licenci un varat pārbaudīt tā kodu nākamajā saitē.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.