FerretDB 0.1 izlaišana, MongoDB ieviešana, kuras pamatā ir PostgreSQL DBVS

Ir publicēts FerretDB 0.1 projekta (agrāk MangoDB) izlaidums, kas ļauj aizstāt uz dokumentiem orientēto DBVS MongoDB ar PostgreSQL, neveicot izmaiņas lietojumprogrammas kodā. FerretDB ir ieviests kā starpniekserveris, kas pārvērš MangoDB izsaukumus SQL vaicājumos uz PostgreSQL, ļaujot PostgreSQL izmantot kā faktisko krātuvi. Kods ir rakstīts programmā Go un izplatīts saskaņā ar Apache 2.0 licenci.

Migrācijas nepieciešamība var rasties sakarā ar MongoDB pāreju uz patentētu SSPL licenci, kas ir balstīta uz AGPLv3 licenci, bet nav atvērta, jo satur diskriminējošu prasību piegādāt saskaņā ar SSPL licenci ne tikai pašu lietojumprogrammas kodu, bet arī visu mākoņpakalpojuma nodrošināšanā iesaistīto komponentu pirmkods.

FerretDB mērķauditorija ir lietotāji, kuri savās lietojumprogrammās neizmanto MongoDB uzlabotās iespējas, bet vēlas izmantot pilnībā atvērtu programmatūras steku. Pašreizējā izstrādes stadijā FerretDB joprojām atbalsta tikai daļu no MongoDB iespējām, kas visbiežāk tiek izmantotas tipiskās lietojumprogrammās. Nākotnē viņi plāno panākt pilnīgu saderību ar MongoDB draiveriem un nodrošināt iespēju izmantot FerretDB kā pārredzamu MongoDB aizstājēju.

Atcerēsimies, ka MongoDB aizņem nišu starp ātrām un mērogojamām sistēmām, kas izmanto datus atslēgas/vērtības formātā, un relāciju DBVS, kas ir funkcionālas un viegli formulējamas vaicājumus. MongoDB atbalsta dokumentu glabāšanu JSON līdzīgā formātā, tai ir diezgan elastīga valoda vaicājumu ģenerēšanai, var izveidot indeksus dažādiem saglabātajiem atribūtiem, efektīvi nodrošina lielu bināro objektu uzglabāšanu, atbalsta operāciju reģistrēšanu datu mainīšanai un pievienošanai datu bāzei, var strādāt saskaņā ar paradigmu Map/Reduce, atbalsta replikāciju un defektu izturīgu konfigurāciju konstruēšanu.

FerretDB 0.1.0 izlaišana pilnībā pārveidoja datu izgūšanas metodi no PostgreSQL. Iepriekš katram ienākošajam MongoDB pieprasījumam PostgreSQL tika ģenerēts viens SQL vaicājums, izmantojot funkcijas darbam ar JSON formātu un rezultātu filtrēšanai PostgreSQL pusē. PostgreSQL un MongoDB json funkciju semantikas atšķirību dēļ, salīdzinot un kārtojot dažādus veidus, radās darbības neatbilstība. Lai atrisinātu šo problēmu, dati tagad tiek atkārtoti ielādēti no PostgreSQL, un rezultāts tiek filtrēts FerretDB pusē, kas ļāva vairumā situāciju atkārtot MongoDB uzvedību.

Palielinātās saderības cena bija veiktspējas samazināšanās, ko viņi cer kompensēt turpmākajos laidienos, selektīvi filtrējot FerretDB pusē tikai tos vaicājumus, kuru darbībā ir neatbilstība. 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 saderību ar MongoDB, un veiktspēja pagaidām ir atstāta otrajā plānā. Starp funkcionālajām izmaiņām jaunajā versijā tiek atzīmēts atbalsts visiem bitu operatoriem, “$eq” salīdzināšanas operatoram, kā arī “$elemMatch” un “$bitsAllClear” operatoriem.

Avots: opennet.ru

Pievieno komentāru