FerretDB 0.1-ի թողարկում, MongoDB-ի իրականացում, որը հիմնված է PostgreSQL DBMS-ի վրա:

Հրապարակվել է FerretDB 0.1 նախագծի (նախկինում՝ MangoDB) թողարկումը, որը թույլ է տալիս փոխարինել փաստաթղթերի վրա հիմնված DBMS MongoDB-ն PostgreSQL-ով՝ առանց հավելվածի կոդում փոփոխություններ կատարելու: FerretDB-ն իրականացվում է որպես պրոքսի սերվեր, որը MangoDB-ի զանգերը թարգմանում է SQL հարցումների դեպի PostgreSQL՝ թույլ տալով PostgreSQL-ն օգտագործել որպես իրական պահեստ: Կոդը գրված է Go-ում և տարածվում է Apache 2.0 լիցենզիայի ներքո:

Միգրացիայի անհրաժեշտությունը կարող է առաջանալ MongoDB-ի սեփական SSPL լիցենզիայի անցնելու պատճառով, որը հիմնված է AGPLv3 լիցենզիայի վրա, բայց բաց չէ, քանի որ այն պարունակում է խտրական պահանջ՝ SSPL լիցենզիայի ներքո մատուցելու ոչ միայն հայտի ծածկագիրը, այլ նաև: տրամադրման ամպային ծառայության մեջ ներգրավված բոլոր բաղադրիչների աղբյուրի կոդը:

FerretDB-ի թիրախային լսարանը օգտատերերն են, ովքեր չեն օգտագործում MongoDB-ի առաջադեմ հնարավորությունները իրենց հավելվածներում, բայց ցանկանում են օգտագործել ամբողջովին բաց ծրագրային փաթեթ: Զարգացման ներկա փուլում FerretDB-ն դեռ աջակցում է MongoDB-ի հնարավորությունների միայն մի մասին, որոնք առավել հաճախ օգտագործվում են տիպիկ հավելվածներում: Ապագայում նրանք նախատեսում են հասնել լիակատար համատեղելիության վարորդների հետ MongoDB-ի համար և ապահովել FerretDB-ն օգտագործելու հնարավորություն՝ որպես MongoDB-ի թափանցիկ փոխարինում:

Հիշենք, որ MongoDB-ն տեղ է գրավում արագ և մասշտաբային համակարգերի միջև, որոնք աշխատում են տվյալների բանալին/արժեք ձևաչափով, և հարաբերական DBMS-ների միջև, որոնք ֆունկցիոնալ են և հեշտ են հարցումներ ձևակերպել: MongoDB-ն աջակցում է JSON-ի նման ձևաչափով փաստաթղթերի պահպանմանը, ունի հարցումներ ստեղծելու բավականին ճկուն լեզու, կարող է ստեղծել ինդեքսներ տարբեր պահված ատրիբուտների համար, արդյունավետորեն ապահովում է խոշոր երկուական օբյեկտների պահեստավորում, աջակցում է տվյալների շտեմարանում տվյալների փոփոխման և ավելացման գործողությունների գրանցմանը, աշխատել «Քարտեզ/Կրճատել» պարադիգմի համաձայն, աջակցում է սխալների հանդուրժող կոնֆիգուրացիաների կրկնօրինակմանը և կառուցմանը:

FerretDB 0.1.0-ի թողարկումն ամբողջությամբ վերափոխեց PostgreSQL-ից տվյալների որոնման մեթոդը: Նախկինում, յուրաքանչյուր մուտքային MongoDB հարցման համար PostgreSQL-ում ստեղծվում էր մեկ SQL հարցում՝ օգտագործելով JSON ձևաչափի հետ աշխատելու և արդյունքները PostgreSQL-ի կողմից զտելու գործառույթներ: PostgreSQL և MongoDB json ֆունկցիաների իմաստաբանության տարբերությունների պատճառով տարբեր տեսակներ համեմատելիս և տեսակավորելիս եղել է վարքի անհամապատասխանություն: Այս խնդիրը լուծելու համար տվյալները այժմ ավելորդ կերպով վերցվում են PostgreSQL-ից, և արդյունքը զտվում է FerretDB-ի կողմից, ինչը հնարավորություն է տալիս կրկնել MongoDB-ի վարքագիծը շատ իրավիճակներում:

Համատեղելիության բարձրացման գինը կատարողականի նվազումն էր, որը ապագա թողարկումներում նրանք ակնկալում են փոխհատուցել FerretDB-ի կողմից ընտրովի զտելով միայն այն հարցումները, որոնց համար կա վարքի անհամապատասխանություն: Օրինակ, «db.collection.find({_id: 'some-id-value'})» հարցումը կարող է ամբողջությամբ մշակվել PostgreSQL-ում: Ծրագրի առաջնային նպատակը զարգացման այս փուլում MongoDB-ի հետ համատեղելիության հասնելն է, և կատարումն առայժմ հետին պլան է մղվում: Նոր տարբերակի ֆունկցիոնալ փոփոխությունների թվում նշվում է բոլոր բիթ օպերատորների աջակցությունը, «$eq» համեմատական ​​օպերատորը, ինչպես նաև «$elemMatch» և «$bitsAllClear» օպերատորները։

Source: opennet.ru

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