FerretDB 0.1 kiadás, a MongoDB PostgreSQL alapú megvalósítása

Megjelent a FerretDB 0.1 projektkiadása (korábban MangoDB néven), amely lehetővé teszi a MongoDB dokumentum-orientált adatbázis PostgreSQL-re történő cseréjét anélkül, hogy az alkalmazások kódjában változtatásokat kellene végezni. A FerretDB egy proxy szerverként működik, amely a MangoDB-hívásokat SQL lekérdezésekké alakítja PostgreSQL-hez, így a PostgreSQL tényleges tárolóként használható. A kód Go nyelven íródott és az Apache 2.0 licenc alatt érhető el.

A migrációs igény a MongoDB SSPL zárt licencére való áttéréséből adódhat, amely az AGPLv3 licenc alapján készült, de nem nyílt forráskódú, mivel diszkrét követelményt támaszt az SSPL licenc alatt nem csak az alkalmazás kódjának, hanem az összes, a felhőszolgáltatás biztosításához szükséges komponens forráskódjának biztosítására is.

A FerretDB célcsoportjába azok a felhasználók tartoznak, akik nem használják a MongoDB kiterjesztett funkcióit az alkalmazásaikban, de szeretnék használni a teljesen nyílt forráskódú programstacket. A FerretDB jelenlegi fejlesztési fázisában eddig csak a MongoDB leggyakrabban használt funkcióinak egy részét támogatja. A jövőben a MongoDB illesztőprogramokkal való teljes kompatibilitás elérését tervezik, és lehetővé teszik a FerretDB átlátható helyettesítést a MongoDB számára.

Emlékezzünk, hogy a MongoDB a gyors és skálázható rendszerek között helyezkedik el, amelyek kulcs/érték formátumban kezelik az adatokat, valamint a relációs adatbázisok között, amelyek funkcionálisak és kényelmesek a lekérdezések megfogalmazásában. A MongoDB támogatja a dokumentumok JSON-szerű formátumban történő tárolását, eléggé rugalmas lekérdezési nyelve van, képes indexeket létrehozni a különböző tárolt attribútumokra, hatékonyan biztosítja a nagyméretű bináris objektumok tárolását, támogatja az adatbázisban történő adatok módosításának és hozzáadásának műveleteinek naplózását, képes működni a Map/Reduce paradigmával, és támogatja a replikációt, valamint a hibatűrő konfigurációk kiépítését.

A FerretDB 0.1.0 kiadásában teljesen átdolgozták az adatlekérdezési módszert a PostgreSQL-ből. Korábban minden beérkező MongoDB-kéréshez egy SQL-lekérdezés készült a PostgreSQL-hez, amely JSON-formátummal dolgozó funkciókat használt, és az eredmények szűrését a PostgreSQL oldalán hajtotta végre. A PostgreSQL és a MongoDB json-funkcióinak szemantikája közti eltérések miatt a különböző típusok összehasonlítása és rendezése során eltérések léptek fel. Ennek a problémának a megoldására mostantól a PostgreSQL-ből redundáns adatok kerülnek kiemelésre, és a FerretDB-nél történik az eredmény szűrése, ami lehetővé tette a MongoDB viselkedésének megismétlését a legtöbb helyzetben.

A kompatibilitás növelésének ára a teljesítmény csökkenése volt, amelyet a jövőbeli kiadásokban a FerretDB oldalán végzett szelektív szűréssel kompenzálnak majd, csak azoknál a kéréseknél, ahol eltérés tapasztalható. Például a „db.collection.find({_id: 'some-id-value'})” kérés teljes egészében a PostgreSQL-ben dolgozható fel. A projekt elsődleges célja a jelen fejlesztési szakaszban a MongoDB-vel való kompatibilitás elérése, a teljesítmény jelenleg háttérbe szorul. Az új verzió funkcionális változásai közé tartozik az összes bitműveleti operátor, az „$eq” összehasonlító operátor, valamint az „$elemMatch” és az „$bitsAllClear” operátorok támogatása.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster