Lëshimi i FerretDB 0.1, një zbatim i MongoDB bazuar në PostgreSQL DBMS

Publikimi i projektit FerretDB 0.1 (ish MangoDB) është publikuar, duke ju lejuar të zëvendësoni DBMS MongoDB të orientuar nga dokumenti me PostgreSQL pa bërë ndryshime në kodin e aplikacionit. FerretDB zbatohet si një server proxy që përkthen thirrjet në MangoDB në pyetje SQL në PostgreSQL, duke lejuar që PostgreSQL të përdoret si ruajtje aktuale. Kodi është shkruar në Go dhe shpërndahet nën licencën Apache 2.0.

Nevoja për migrim mund të lindë për shkak të kalimit të MongoDB në një licencë të pronarit SSPL, e cila bazohet në licencën AGPLv3, por nuk është e hapur, pasi përmban një kërkesë diskriminuese për të ofruar nën licencën SSPL jo vetëm vetë kodin e aplikacionit, por edhe kodin burimor të të gjithë komponentëve të përfshirë në ofrimin e shërbimit cloud.

Audienca e synuar e FerretDB është përdoruesit që nuk përdorin aftësitë e avancuara të MongoDB në aplikacionet e tyre, por duan të përdorin një pirg softuerësh plotësisht të hapur. Në fazën aktuale të zhvillimit, FerretDB ende mbështet vetëm një pjesë të aftësive të MongoDB që përdoren më shpesh në aplikacionet tipike. Në të ardhmen, ata planifikojnë të arrijnë përputhshmëri të plotë me drejtuesit për MongoDB dhe të ofrojnë aftësinë për të përdorur FerretDB si një zëvendësim transparent për MongoDB.

Le të kujtojmë se MongoDB zë një vend midis sistemeve të shpejta dhe të shkallëzueshme që operojnë të dhënat në formatin kyç/vlerë, dhe DBMS-ve relacionale që janë funksionale dhe të lehta për t'u formuluar pyetje. MongoDB mbështet ruajtjen e dokumenteve në një format të ngjashëm me JSON, ka një gjuhë mjaft fleksibël për gjenerimin e pyetjeve, mund të krijojë indekse për atribute të ndryshme të ruajtura, siguron me efikasitet ruajtjen e objekteve të mëdha binare, mbështet regjistrimin e operacioneve për ndryshimin dhe shtimin e të dhënave në bazën e të dhënave, mund të punojnë në përputhje me paradigmën Harta/Redukto, mbështet replikimin dhe ndërtimin e konfigurimeve tolerante ndaj gabimeve.

Lëshimi i FerretDB 0.1.0 ridizajnoi plotësisht metodën e marrjes së të dhënave nga PostgreSQL. Më parë, për çdo kërkesë hyrëse MongoDB, një pyetje SQL u krijua në PostgreSQL, duke përdorur funksione për të punuar me formatin JSON dhe filtrimin e rezultateve në anën PostgreSQL. Për shkak të dallimeve në semantikën e funksioneve PostgreSQL dhe MongoDB json, pati një mospërputhje në sjellje kur krahasoheshin dhe renditeshin lloje të ndryshme. Për të zgjidhur këtë problem, të dhënat tani merren në mënyrë të tepërt nga PostgreSQL dhe rezultati filtrohet në anën e FerretDB, gjë që bëri të mundur përsëritjen e sjelljes së MongoDB në shumicën e situatave.

Çmimi i rritjes së përputhshmërisë ishte një rënie në performancë, të cilën në publikimet e ardhshme ata presin ta kompensojnë duke filtruar në mënyrë selektive në anën e FerretDB vetëm pyetjet për të cilat ka një mospërputhje në sjellje. Për shembull, pyetja "db.collection.find({_id: 'some-id-value'})" mund të përpunohet tërësisht në PostgreSQL. Qëllimi kryesor i projektit në këtë fazë të zhvillimit është arritja e përputhshmërisë me MongoDB, dhe performanca është zhvendosur në sfond për momentin. Ndër ndryshimet funksionale në versionin e ri, vërehet mbështetja për të gjithë operatorët bit, operatori i krahasimit "$eq", si dhe operatorët "$elemMatch" dhe "$bitsAllClear".

Burimi: opennet.ru

Shto një koment