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

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

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

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

FerretDB 1.0-ийн өөрчлөлтүүдийн дунд:

  • Цуглуулгад нэг буюу хэд хэдэн индекс үүсгэх, хасахад зориулсан createIndexes болон dropIndexes командуудыг хэрэгжүүлсэн.
  • Хайх, нэгтгэх гэх мэт курсорыг буцаадаг командуудын гүйцэтгэлээс олж авсан үр дүнгийн шинэ хэсгийг харуулахын тулд getMore командыг хэрэгжүүлсэн.
  • Бүлгийн утгуудын нийлбэрийг тооцоолох $sum нэгтгэх операторын дэмжлэгийг нэмсэн.
  • $limit болон $skip операторуудын тоог хязгаарлах, нэгтгэх үед баримт бичгийг алгасах дэмжлэгийг нэмсэн.
  • Баримт бичгийг нэгтгэх үед тоолох $count операторын дэмжлэг нэмсэн.
  • Ирж буй баримтууд дахь массив талбаруудыг задлан шинжилж, массивын элемент тус бүрээр тусдаа баримт бичиг бүхий жагсаалт үүсгэх $unwind операторын дэмжлэгийг нэмсэн.
  • Цуглуулга, өгөгдлийн сангийн статистик, өгөгдлийн хэмжээг авахын тулд collStats, dbStats болон dataSize командуудад хэсэгчилсэн дэмжлэг нэмсэн.

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

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