FerretDB 0.1 buraxılışı, PostgreSQL DBMS əsasında MongoDB tətbiqi

Tətbiq kodunda dəyişiklik etmədən sənəd yönümlü DBMS MongoDB-ni PostgreSQL ilə əvəz etməyə imkan verən FerretDB 0.1 layihəsinin (əvvəlki MangoDB) buraxılışı nəşr olundu. FerretDB, MangoDB-yə edilən zəngləri SQL sorğularına PostgreSQL-ə çevirən və PostgreSQL-in faktiki yaddaş kimi istifadə edilməsinə imkan verən proxy server kimi həyata keçirilir. Kod Go-da yazılır və Apache 2.0 lisenziyası altında paylanır.

Miqrasiya ehtiyacı MongoDB-nin AGPLv3 lisenziyasına əsaslanan, lakin açıq olmayan mülkiyyət SSPL lisenziyasına keçidi ilə əlaqədar yarana bilər, çünki o, SSPL lisenziyası altında təkcə proqram kodunun özünü deyil, həm də təqdim etmək üçün ayrı-seçkilik tələbini ehtiva edir. bulud xidmətinin təmin edilməsində iştirak edən bütün komponentlərin mənbə kodu.

FerretDB-nin hədəf auditoriyası öz tətbiqlərində MongoDB-nin qabaqcıl imkanlarından istifadə etməyən, lakin tamamilə açıq proqram yığınından istifadə etmək istəyən istifadəçilərdir. Hazırkı inkişaf mərhələsində FerretDB hələ də tipik tətbiqlərdə ən çox istifadə olunan MongoDB imkanlarının yalnız bir hissəsini dəstəkləyir. Gələcəkdə onlar MongoDB üçün sürücülərlə tam uyğunluğa nail olmağı və FerretDB-dən MongoDB üçün şəffaf bir əvəz kimi istifadə etmək imkanı verməyi planlaşdırırlar.

Xatırladaq ki, MongoDB açar/dəyər formatında verilənlər üzərində işləyən sürətli və genişlənə bilən sistemlər və sorğuların yaradılmasında funksional və rahat olan relational DBMS arasında yer tutur. MongoDB sənədlərin JSON formatında saxlanmasını dəstəkləyir, sorğular yaratmaq üçün kifayət qədər çevik bir dilə malikdir, müxtəlif saxlanılan atributlar üçün indekslər yarada bilir, böyük ikili obyektlərin saxlanmasını səmərəli şəkildə təmin edir, verilənlər bazasına məlumatların dəyişdirilməsi və əlavə edilməsi üçün əməliyyatların qeydiyyatını dəstəkləyir. Xəritə/Reduce paradiqmasına uyğun olaraq işləmək, replikasiyanı və xətaya dözümlü konfiqurasiyaların qurulmasını dəstəkləyir.

FerretDB 0.1.0 buraxılışı PostgreSQL-dən məlumatların alınması metodunu tamamilə yenidən işləyib hazırladı. Əvvəllər hər daxil olan MongoDB sorğusu üçün PostgreSQL-də JSON formatı ilə işləmək və PostgreSQL tərəfində nəticələri süzmək funksiyalarından istifadə edərək bir SQL sorğusu yaradılırdı. PostgreSQL və MongoDB json funksiyalarının semantikasındakı fərqlərə görə, müxtəlif növlərin müqayisəsi və çeşidlənməsi zamanı davranışda uyğunsuzluq var idi. Bu problemi həll etmək üçün artıq məlumatlar PostgreSQL-dən lazımsız olaraq alınır və nəticə FerretDB tərəfində süzülür ki, bu da əksər hallarda MongoDB-nin davranışını təkrarlamağa imkan verdi.

Artan uyğunluğun qiyməti performansın azalması idi, gələcək buraxılışlarda yalnız davranışda uyğunsuzluq olan sorğuları FerretDB tərəfində seçici olaraq süzməklə kompensasiya etməyi gözləyirlər. Məsələn, "db.collection.find({_id: 'some-id-value'})" sorğusu tamamilə PostgreSQL-də işlənə bilər. İnkişafın bu mərhələsində layihənin əsas məqsədi MongoDB ilə uyğunluğa nail olmaqdır və performans hələlik arxa plana keçir. Yeni versiyada funksional dəyişikliklər arasında bütün bit operatorları, “$eq” müqayisə operatoru, həmçinin “$elemMatch” və “$bitsAllClear” operatorları üçün dəstək qeyd olunub.

Mənbə: opennet.ru

Добавить комментарий