Vrystelling van FerretDB 0.1, MongoDB-implementering gebaseer op PostgreSQL DBMS

Die vrystelling van die FerretDB 0.1-projek (voorheen MangoDB) is gepubliseer, sodat jy die dokument-georiënteerde DBMS MongoDB met PostgreSQL kan vervang sonder om veranderinge aan die toepassingskode aan te bring. FerretDB word geïmplementeer as 'n instaanbediener wat oproepe na MangoDB in SQL-navrae na PostgreSQL vertaal, waardeur PostgreSQL as die werklike berging gebruik kan word. Die kode is in Go geskryf en onder die Apache 2.0-lisensie versprei.

Die behoefte aan migrasie kan ontstaan ​​as gevolg van MongoDB se oorgang na 'n eie SSPL-lisensie, wat op die AGPLv3-lisensie gebaseer is, maar nie oop is nie, aangesien dit 'n diskriminerende vereiste bevat om onder die SSPL-lisensie nie net die toepassingskode self te lewer nie, maar ook die bronkode van alle komponente betrokke by die voorsiening van wolkdiens.

FerretDB se teikengehoor is gebruikers wat nie die gevorderde vermoëns van MongoDB in hul toepassings gebruik nie, maar 'n heeltemal oop sagtewarestapel wil gebruik. Op die huidige stadium van ontwikkeling ondersteun FerretDB steeds slegs 'n deel van die MongoDB-vermoëns wat die meeste in tipiese toepassings gebruik word. In die toekoms beplan hulle om volle versoenbaarheid met drywers vir MongoDB te bereik en die vermoë te bied om FerretDB as 'n deursigtige plaasvervanger vir MongoDB te gebruik.

Onthou dat MongoDB 'n nis beslaan tussen vinnige en skaalbare stelsels wat op data werk in die sleutel/waarde-formaat, en relasionele DBMS, funksioneel en gerieflik in die generering van navrae. MongoDB ondersteun die stoor van dokumente in 'n JSON-agtige formaat, het 'n redelik buigsame taal vir die generering van navrae, kan indekse vir verskeie gestoorde eienskappe skep, verskaf doeltreffend berging van groot binêre voorwerpe, ondersteun aanteken van bewerkings om data te verander en by die databasis te voeg, kan werk in ooreenstemming met die paradigma Map/Reduce, ondersteun replikasie en bou van foutverdraagsame konfigurasies.

Die vrystelling van FerretDB 0.1.0 het die metode om data van PostgreSQL te herwin heeltemal herontwerp. Voorheen, vir elke inkomende MongoDB-versoek, is een SQL-navraag na PostgreSQL gegenereer, met behulp van funksies om met die JSON-formaat te werk en die resultate aan die PostgreSQL-kant te filter. As gevolg van verskille in die semantiek van PostgreSQL en MongoDB json funksies, was daar 'n verskil in gedrag wanneer verskillende tipes vergelyk en gesorteer is. Om hierdie probleem op te los, word data nou oortollig van PostgreSQL afgehaal, en die resultaat word aan die FerretDB-kant gefiltreer, wat dit moontlik gemaak het om die gedrag van MongoDB in die meeste situasies te herhaal.

Die prys van verhoogde verenigbaarheid was 'n afname in werkverrigting, wat hulle in toekomstige uitgawes verwag om te vergoed deur slegs navrae aan die FerretDB-kant selektief te filter waarvoor daar 'n verskil in gedrag is. Byvoorbeeld, die navraag "db.collection.find({_id: 'some-id-value'})" kan heeltemal in PostgreSQL verwerk word. Die primêre doel van die projek op hierdie stadium van ontwikkeling is om verenigbaarheid met MongoDB te bereik, en prestasie word vir eers op die agtergrond geskuif. Onder die funksionele veranderinge in die nuwe weergawe word ondersteuning vir alle bisoperateurs, die "$eq"-vergelykingsoperateur, sowel as die "$elemMatch" en "$bitsAllClear"-operateurs opgemerk.

Bron: opennet.ru

Voeg 'n opmerking