FerretDB 0.1 versiyasi, PostgreSQL DBMS asosidagi MongoDB ilovasi.

FerretDB 0.1 loyihasining (sobiq MangoDB) chiqarilishi nashr etildi, bu sizga hujjatga yo'naltirilgan MongoDB ma'lumotlar bazasini PostgreSQL bilan dastur kodiga o'zgartirish kiritmasdan almashtirish imkonini beradi. FerretDB MangoDB-ga qo'ng'iroqlarni SQL so'rovlariga PostgreSQL-ga tarjima qiladigan proksi-server sifatida amalga oshiriladi, bu esa PostgreSQL-dan haqiqiy xotira sifatida foydalanishga imkon beradi. Kod Go-da yozilgan va Apache 2.0 litsenziyasi ostida tarqatiladi.

Migratsiya zarurati MongoDB-ning AGPLv3 litsenziyasiga asoslangan xususiy SSPL litsenziyasiga o'tishi bilan bog'liq bo'lishi mumkin, lekin u ochiq emas, chunki u SSPL litsenziyasi ostida nafaqat dastur kodini, balki etkazib berish uchun kamsituvchi talabni o'z ichiga oladi. bulut xizmatini taqdim etishda ishtirok etadigan barcha komponentlarning manba kodi.

FerretDB ning maqsadli auditoriyasi o'z ilovalarida MongoDB ning ilg'or imkoniyatlaridan foydalanmaydigan, lekin butunlay ochiq dasturiy ta'minot to'plamidan foydalanmoqchi bo'lgan foydalanuvchilardir. Rivojlanishning hozirgi bosqichida FerretDB hali ham odatiy ilovalarda tez-tez ishlatiladigan MongoDB imkoniyatlarining faqat bir qismini qo'llab-quvvatlaydi. Kelajakda ular MongoDB uchun drayverlarga to'liq moslashishni rejalashtirmoqdalar va FerretDB-dan MongoDB uchun shaffof o'rinbosar sifatida foydalanish imkoniyatini taqdim etishadi.

Eslatib o'tamiz, MongoDB ma'lumotlarni kalit/qiymat formatida boshqaradigan tezkor va kengaytiriladigan tizimlar va funktsional va so'rovlarni shakllantirish oson bo'lgan relyatsion DBMSlar o'rtasida joy egallaydi. MongoDB hujjatlarni JSON-ga o'xshash formatda saqlashni qo'llab-quvvatlaydi, so'rovlarni yaratish uchun juda moslashuvchan tilga ega, turli xil saqlangan atributlar uchun indekslarni yaratishi mumkin, katta ikkilik ob'ektlarning saqlanishini samarali ta'minlaydi, ma'lumotlar bazasiga ma'lumotlarni o'zgartirish va qo'shish operatsiyalarini ro'yxatga olishni qo'llab-quvvatlaydi. Xarita/Kamaytirish paradigmasiga muvofiq ishlash, xatoga chidamli konfiguratsiyalarni takrorlash va qurishni qo'llab-quvvatlaydi.

FerretDB 0.1.0 versiyasi PostgreSQL-dan ma'lumotlarni olish usulini butunlay qayta ishlab chiqdi. Ilgari, har bir kiruvchi MongoDB so'rovi uchun PostgreSQL uchun JSON formati bilan ishlash va PostgreSQL tomonidagi natijalarni filtrlash funktsiyalaridan foydalangan holda bitta SQL so'rovi yaratilgan. PostgreSQL va MongoDB json funksiyalarining semantikasidagi farqlar tufayli har xil turlarni solishtirish va saralashda xatti-harakatlarda nomuvofiqlik yuzaga keldi. Ushbu muammoni hal qilish uchun endi PostgreSQL-dan ma'lumotlar ortiqcha olinadi va natija FerretDB tomonida filtrlanadi, bu ko'p holatlarda MongoDB xatti-harakatlarini takrorlash imkonini berdi.

Muvofiqlikning oshishi narxi ishlashning pasayishi bo'lib, kelajakdagi nashrlarda ular FerretDB tomonida faqat xatti-harakatlarida nomuvofiqlik mavjud bo'lgan so'rovlarni tanlab filtrlash orqali kompensatsiya qilishni kutishadi. Masalan, "db.collection.find({_id: 'some-id-value'})" so'rovi butunlay PostgreSQL da qayta ishlanishi mumkin. Rivojlanishning ushbu bosqichidagi loyihaning asosiy maqsadi MongoDB bilan muvofiqlikka erishishdir va unumdorlik hozircha fonga o'tkaziladi. Yangi versiyadagi funktsional o'zgarishlar orasida barcha bit operatorlarini, "$eq" taqqoslash operatorini, shuningdek, "$elemMatch" va "$bitsAllClear" operatorlarini qo'llab-quvvatlash qayd etilgan.

Manba: opennet.ru

a Izoh qo'shish