PostgreSQL DBMS дээр суурилсан MongoDB-ийн хэрэгжүүлэлт болох FerretDB 0.1 хувилбар.

FerretDB 0.1 төслийн (хуучнаар MangoDB) хувилбар нийтлэгдсэн бөгөөд энэ нь баримт бичигт суурилсан DBMS MongoDB-г програмын кодонд өөрчлөлт оруулахгүйгээр PostgreSQL-ээр солих боломжийг танд олгоно. FerretDB нь MangoDB руу хийсэн дуудлагыг SQL асуулга руу PostgreSQL рүү хөрвүүлдэг прокси сервер хэлбэрээр хэрэгжсэн бөгөөд PostgreSQL-г бодит хадгалах сан болгон ашиглах боломжийг олгодог. Код нь Go дээр бичигдсэн бөгөөд Apache 2.0 лицензийн дагуу түгээгддэг.

MongoDB нь AGPLv3 лиценз дээр суурилсан өмчийн SSPL лиценз рүү шилжсэнтэй холбоотойгоор шилжин суурьших шаардлага үүсч болох боловч энэ нь SSPL лицензийн дагуу зөвхөн програмын кодыг төдийгүй бас нээлттэй биш юм. үүлэн үйлчилгээнд хамрагдсан бүх бүрэлдэхүүн хэсгүүдийн эх код.

FerretDB-ийн зорилтот хэрэглэгчид нь MongoDB-ийн дэвшилтэт чадавхийг программдаа ашигладаггүй ч бүрэн нээлттэй програм хангамжийн стек ашиглахыг хүсдэг хэрэглэгчид юм. Хөгжлийн өнөөгийн шатанд FerretDB нь ердийн программуудад ихэвчлэн ашиглагддаг MongoDB боломжуудын зөвхөн хэсгийг л дэмждэг хэвээр байна. Ирээдүйд тэд MongoDB-ийн драйверуудтай бүрэн нийцэж, FerretDB-ийг MongoDB-ийн ил тод орлуулах боломжийг олгохоор төлөвлөж байна.

MongoDB нь өгөгдлийг түлхүүр/утга форматаар ажиллуулдаг хурдан бөгөөд өргөтгөх боломжтой системүүд болон функциональ, асуулга боловсруулахад хялбар харилцааны DBMS-ийн хооронд байр суурийг эзэлдэг гэдгийг эргэн санацгаая. MongoDB нь баримт бичгийг JSON шиг форматаар хадгалахыг дэмждэг, асуулга үүсгэх уян хатан хэлтэй, янз бүрийн хадгалагдсан шинж чанаруудын индекс үүсгэх боломжтой, хоёртын том объектуудыг үр ашигтайгаар хадгалах, өгөгдлийн санд өгөгдлийг өөрчлөх, нэмэх үйлдлүүдийн бүртгэлийг дэмждэг. "Газрын зураг/багасгах" парадигмын дагуу ажиллах, алдааг тэсвэрлэх чадвартай тохиргоог хуулбарлах, бүтээхийг дэмждэг.

FerretDB 0.1.0 хувилбар нь PostgreSQL-ээс мэдээлэл авах аргыг бүрэн шинэчилсэн. Өмнө нь ирж буй MongoDB хүсэлт бүрт JSON форматтай ажиллах, PostgreSQL талд үр дүнг шүүх функцуудыг ашиглан PostgreSQL-д нэг SQL асуулга үүсгэдэг байсан. PostgreSQL болон MongoDB json функцуудын семантикийн ялгаатай байдлаас шалтгаалан янз бүрийн төрлүүдийг харьцуулах, эрэмбэлэх үед зан үйлийн зөрүү гарсан. Энэ асуудлыг шийдэхийн тулд PostgreSQL-ээс өгөгдлийг дахин татаж авч, үр дүнг FerretDB тал дээр шүүж, ихэнх тохиолдолд MongoDB-ийн үйлдлийг давтах боломжтой болсон.

Тохиромжтой байдлын үнэ нь гүйцэтгэлийн бууралт байсан бөгөөд ирээдүйн хувилбаруудад зөвхөн зан төлөвийн зөрүүтэй асуултуудыг FerretDB тал дээр сонгон шүүж нөхөх болно гэж найдаж байна. Жишээлбэл, "db.collection.find({_id: 'some-id-value'})" хайлтыг PostgreSQL дээр бүхэлд нь боловсруулж болно. Хөгжлийн энэ үе шатанд байгаа төслийн гол зорилго нь MongoDB-тэй нийцтэй байх явдал бөгөөд гүйцэтгэлийг одоохондоо хоцрогдсон байна. Шинэ хувилбарт гарсан функциональ өөрчлөлтүүдийн дунд бүх бит операторуудын дэмжлэг, "$eq" харьцуулах оператор, түүнчлэн "$elemMatch" болон "$bitsAllClear" операторуудыг тэмдэглэсэн болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх