Liberigo de FerretDB 0.1, efektivigo de MongoDB bazita sur la PostgreSQL DBMS

La eldono de la projekto FerretDB 0.1 (antaŭe MangoDB) estis publikigita, permesante al vi anstataŭigi la dokument-orientitan DBMS MongoDB per PostgreSQL sen fari ŝanĝojn al la aplika kodo. FerretDB estas efektivigita kiel prokura servilo kiu tradukas vokojn al MangoDB en SQL-demandojn al PostgreSQL, permesante al PostgreSQL esti uzata kiel la fakta stokado. La kodo estas skribita en Go kaj distribuita sub la licenco Apache 2.0.

La bezono de migrado povas ekesti pro la transiro de MongoDB al proprieta SSPL-licenco, kiu estas bazita sur la AGPLv3-licenco, sed ne estas malfermita, ĉar ĝi enhavas diskriminacian postulon liveri sub la SSPL-licenco ne nur la aplikaĵokodon mem, sed ankaŭ la fontkodo de ĉiuj komponantoj implikitaj en la proviza nuba servo.

La celgrupo de FerretDB estas uzantoj, kiuj ne uzas la altnivelajn kapablojn de MongoDB en siaj aplikoj, sed volas uzi tute malfermitan programaron stakon. En la nuna etapo de evoluo, FerretDB ankoraŭ subtenas nur parton de la MongoDB-kapabloj, kiuj plej ofte estas uzataj en tipaj aplikoj. En la estonteco, ili planas atingi plenan kongruon kun ŝoforoj por MongoDB kaj disponigi la kapablon uzi FerretDB kiel travidebla anstataŭaĵo por MongoDB.

Memoru, ke MongoDB okupas niĉon inter rapidaj kaj skaleblaj sistemoj, kiuj funkcias per datumoj en la ŝlosila/valora formato, kaj interrilata DBMS, funkcia kaj oportuna en generado de demandoj. MongoDB subtenas stokadon de dokumentoj en JSON-simila formato, havas sufiĉe flekseblan lingvon por generi demandojn, povas krei indeksojn por diversaj stokitaj atributoj, efike provizas stokadon de grandaj binaraj objektoj, subtenas registradon de operacioj por ŝanĝi kaj aldoni datumojn al la datumbazo, povas labori laŭ la paradigmo Map/Reduce, subtenas reproduktadon kaj konstruadon de misfunkciaj agordoj.

La liberigo de FerretDB 0.1.0 tute restrukturis la metodon de reakiro de datumoj de PostgreSQL. Antaŭe, por ĉiu alvenanta MongoDB-peto, unu SQL-demando estis generita al PostgreSQL, uzante funkciojn por labori kun la JSON-formato kaj filtri la rezultojn ĉe la flanko de PostgreSQL. Pro diferencoj en la semantiko de PostgreSQL kaj MongoDB json-funkcioj, estis diferenco en konduto dum komparado kaj ordigo de malsamaj tipoj. Por solvi ĉi tiun problemon, datumoj nun estas redunde prenitaj de PostgreSQL, kaj la rezulto estas filtrita ĉe la flanko de FerretDB, kio ebligis reprodukti la konduton de MongoDB en la plej multaj situacioj.

La prezo de pliigita kongruo estis malpliigo de rendimento, kiun en estontaj eldonoj ili atendas kompensi elekte filtrante sur la flanko de FerretDB nur demandojn, por kiuj estas diferenco en konduto. Ekzemple, la demando "db.collection.find({_id: 'some-id-value'})" povas esti procesita tute en PostgreSQL. La ĉefa celo de la projekto en ĉi tiu etapo de evoluo estas atingi kongruon kun MongoDB, kaj efikeco estas forigita al la fono nuntempe. Inter la funkciaj ŝanĝoj en la nova versio, subteno por ĉiuj bitfunkciigistoj, la "$eq" kompara operatoro, same kiel la "$elemMatch" kaj "$bitsAllClear" estas notitaj.

fonto: opennet.ru

Aldoni komenton