Rhyddhau FerretDB 0.1, gweithrediad MongoDB yn seiliedig ar DBMS PostgreSQL

Mae rhyddhau prosiect FerretDB 0.1 (MangoDB gynt) wedi'i gyhoeddi, sy'n eich galluogi i ddisodli'r DBMS MongoDB sy'n canolbwyntio ar ddogfen gyda PostgreSQL heb wneud newidiadau i'r cod cais. Mae FerretDB yn cael ei weithredu fel gweinydd dirprwyol sy'n trosi galwadau i MangoDB yn ymholiadau SQL i PostgreSQL, gan ganiatáu i PostgreSQL gael ei ddefnyddio fel storfa wirioneddol. Mae'r cod wedi'i ysgrifennu yn Go a'i ddosbarthu o dan drwydded Apache 2.0.

Gall yr angen am fudo godi oherwydd trosglwyddiad MongoDB i drwydded SSPL berchnogol, sy'n seiliedig ar y drwydded AGPLv3, ond nad yw'n agored, gan ei fod yn cynnwys gofyniad gwahaniaethol i gyflawni o dan y drwydded SSPL nid yn unig y cod cais ei hun, ond hefyd cod ffynhonnell yr holl gydrannau sy'n ymwneud â'r gwasanaeth cwmwl darparu.

Cynulleidfa darged FerretDB yw defnyddwyr nad ydynt yn defnyddio galluoedd uwch MongoDB yn eu cymwysiadau, ond sydd am ddefnyddio pentwr meddalwedd cwbl agored. Ar y cam datblygu presennol, mae FerretDB yn dal i gefnogi rhan yn unig o'r galluoedd MongoDB a ddefnyddir amlaf mewn cymwysiadau nodweddiadol. Yn y dyfodol, maent yn bwriadu cyflawni cydnawsedd llawn â gyrwyr ar gyfer MongoDB a darparu'r gallu i ddefnyddio FerretDB yn lle tryloyw ar gyfer MongoDB.

Dwyn i gof bod MongoDB yn meddiannu cilfach rhwng systemau cyflym a graddadwy sy'n gweithredu ar ddata yn y fformat allweddol / gwerth, a DBMS perthynol, swyddogaethol a chyfleus wrth gynhyrchu ymholiadau. Mae MongoDB yn cefnogi storio dogfennau mewn fformat tebyg i JSON, mae ganddo iaith weddol hyblyg ar gyfer cynhyrchu ymholiadau, gall greu mynegeion ar gyfer amrywiol nodweddion sydd wedi'u storio, mae'n darparu storio gwrthrychau deuaidd mawr yn effeithlon, yn cefnogi logio gweithrediadau i newid ac ychwanegu data i'r gronfa ddata, yn gallu gweithio yn unol â'r patrwm Map/Lleihau, cefnogi atgynhyrchu ac adeiladu ffurfweddiadau sy'n gallu goddef diffygion.

Ailgynlluniodd rhyddhau FerretDB 0.1.0 y dull o adfer data o PostgreSQL yn llwyr. Yn flaenorol, ar gyfer pob cais MongoDB a oedd yn dod i mewn, cynhyrchwyd un ymholiad SQL i PostgreSQL, gan ddefnyddio swyddogaethau ar gyfer gweithio gyda fformat JSON a hidlo'r canlyniadau ar ochr PostgreSQL. Oherwydd gwahaniaethau yn semanteg swyddogaethau PostgreSQL a MongoDB json, roedd anghysondeb mewn ymddygiad wrth gymharu a didoli gwahanol fathau. I ddatrys y broblem hon, mae data bellach yn cael ei nôl yn ddiangen o PostgreSQL, ac mae'r canlyniad yn cael ei hidlo ar ochr FerretDB, a wnaeth hi'n bosibl ailadrodd ymddygiad MongoDB yn y rhan fwyaf o sefyllfaoedd.

Roedd pris cydnawsedd cynyddol yn ostyngiad mewn perfformiad, y maent yn disgwyl ei wneud yn iawn mewn datganiadau yn y dyfodol trwy hidlo'n ddetholus ar yr ochr FerretDB yn unig ymholiadau y mae anghysondeb mewn ymddygiad ar eu cyfer. Er enghraifft, gellir prosesu'r ymholiad "db.collection.find({_id: 'some-id-value'})" yn gyfan gwbl yn PostgreSQL. Prif nod y prosiect ar y cam datblygu hwn yw sicrhau cydnawsedd â MongoDB, ac mae perfformiad yn cael ei ostwng i'r cefndir am y tro. Ymhlith y newidiadau swyddogaethol yn y fersiwn newydd, nodir cefnogaeth i bob gweithredwr did, y gweithredwr cymharu “$ eq”, yn ogystal â'r gweithredwyr “$elemMatch” a “$bitsAllClear”.

Ffynhonnell: opennet.ru

Ychwanegu sylw