FerretDB 0.1:n julkaisu, MongoDB:n toteutus, joka perustuu PostgreSQL DBMS:ään

FerretDB 0.1 -projektin (entinen MangoDB) julkaisu on julkaistu, jonka avulla voit korvata dokumenttipohjaisen DBMS MongoDB:n PostgreSQL:llä ilman muutoksia sovelluskoodiin. FerretDB on toteutettu välityspalvelimena, joka kääntää MangoDB:n kutsut SQL-kyselyiksi PostgreSQL:ksi, mikä mahdollistaa PostgreSQL:n käytön varsinaisena tallennustilana. Koodi on kirjoitettu Go-kielellä ja jaettu Apache 2.0 -lisenssillä.

Siirrontarve voi syntyä MongoDB:n siirtyessä omaan SSPL-lisenssiin, joka perustuu AGPLv3-lisenssiin, mutta ei ole avoin, koska se sisältää syrjivän vaatimuksen toimittaa SSPL-lisenssin alla paitsi itse sovelluskoodi, myös kaikkien pilvipalvelun tarjoamiseen liittyvien komponenttien lähdekoodi.

FerretDB:n kohderyhmänä ovat käyttäjät, jotka eivät käytä sovelluksissaan MongoDB:n edistyneitä ominaisuuksia, vaan haluavat käyttää täysin avointa ohjelmistopinoa. Nykyisessä kehitysvaiheessa FerretDB tukee edelleen vain osaa MongoDB-ominaisuuksista, joita käytetään useimmiten tyypillisissä sovelluksissa. Jatkossa he aikovat saavuttaa täyden yhteensopivuuden MongoDB:n ohjaimien kanssa ja tarjota mahdollisuuden käyttää FerretDB:tä läpinäkyvänä MongoDB:n korvaajana.

Muista, että MongoDB:llä on markkinarako nopeiden ja skaalautuvien järjestelmien välillä, jotka toimivat avain/arvo-muodossa olevilla tiedoilla, ja relaatiotietokantajärjestelmä, joka on toimiva ja kätevä kyselyiden luomisessa. MongoDB tukee asiakirjojen tallentamista JSON-kaltaiseen muotoon, sillä on melko joustava kieli kyselyjen luomiseen, se pystyy luomaan indeksejä erilaisille tallennetuille attribuuteille, tarjoaa tehokkaasti tallennustilaa suurille binääriobjekteille, tukee toimintojen kirjaamista tietojen muuttamiseksi ja lisäämiseksi tietokantaan, voi toimivat Map/Reduce-paradigman mukaisesti, tukee replikointia ja vikasietoisten kokoonpanojen rakentamista.

FerretDB 0.1.0:n julkaisu suunnitteli kokonaan uudelleen menetelmän tietojen hakemiseksi PostgreSQL:stä. Aiemmin jokaista saapuvaa MongoDB-pyyntöä kohden luotiin yksi SQL-kysely PostgreSQL:lle käyttämällä toimintoja JSON-muodon kanssa työskentelemiseen ja tulosten suodattamiseen PostgreSQL-puolella. PostgreSQL- ja MongoDB json -funktioiden semantiikan eroista johtuen käyttäytymisessä oli eroja eri tyyppejä verrattaessa ja lajiteltaessa. Tämän ongelman ratkaisemiseksi tiedot haetaan nyt redundanttisesti PostgreSQL:stä ja tulos suodatetaan FerretDB-puolella, mikä mahdollisti MongoDB:n toiminnan monistamisen useimmissa tilanteissa.

Lisääntyneen yhteensopivuuden hinta oli suorituskyvyn heikkeneminen, jonka he odottavat tulevissa julkaisuissa kompensoivan suodattamalla valikoivasti FerretDB-puolella vain kyselyt, joiden käyttäytymisessä on eroja. Esimerkiksi kysely "db.collection.find({_id: 'some-id-value'})" voidaan käsitellä kokonaan PostgreSQL:ssä. Projektin ensisijainen tavoite tässä kehitysvaiheessa on saavuttaa yhteensopivuus MongoDB:n kanssa, ja suorituskyky jää toistaiseksi taustalle. Uuden version toiminnallisista muutoksista mainitaan tuki kaikille bittioperaattoreille, "$eq" -vertailuoperaattorille sekä "$elemMatch"- ja "$bitsAllClear"-operaattoreille.

Lähde: opennet.ru

Lisää kommentti