Першы стабільны выпуск FerretDB, рэалізацыі MongoDB на базе СКБД PostgreSQL

Апублікаваны выпуск праекта FerretDB 1.0, які дазваляе замяніць дакумента-арыентаваную СКБД MongoDB на PostgreSQL без унясення змен у код прыкладанняў. FerretDB рэалізаваны як проксі-сервер, які транслюе звароты да MongoDB у SQL-запыты да PostgreSQL, што дазваляе выкарыстоўваць PostgreSQL у якасці фактычнага сховішча. Версія 1.0 адзначана як першы стабільны выпуск, гатовы для паўсюднага выкарыстання. Код напісаны на мове Go і распаўсюджваецца пад ліцэнзіяй Apache 2.0.

Асноўнай мэтавай аўдыторыяй FerretDB з'яўляюцца карыстачы, якія не ўжываюць у сваіх прыкладаннях пашыраныя магчымасці MongoDB, але жадаюць выкарыстоўваць цалкам адчынены праграмны стэк. На бягучым этапе развіцця FerretDB падтрымлівае падмноства магчымасцяў MongoDB, найболей часта ўжывальных у тыпавых прыкладаннях. Неабходнасць укаранення FerretDB можа паўстаць у сувязі з пераходам MongoDB на нявольную ліцэнзію SSPL, якая заснавана на ліцэнзіі AGPLv3, але не з'яўляецца адчыненай, бо ўтрымоўвае дыскрымінавальнае патрабаванне пастаўкі пад ліцэнзіяй SSPL не толькі кода самога прыкладання, але і зыходных тэкстаў усіх кампанентаў, уцягнутых у прадастаўленне хмарнага сэрвісу.

MongoDB займае нішу паміж хуткімі і якія маштабуюцца сістэмамі, якія аперуюць дадзенымі ў фармаце ключ/значэнне, і рэляцыйнымі СКБД, функцыянальнымі і зручнымі ў фармаванні запытаў. MongoDB падтрымлівае захоўванне дакументаў у JSON-падобным фармаце, мае досыць гнуткую мову для фармавання запытаў, можа ствараць індэксы для розных захоўваемых атрыбутаў, эфектыўна забяспечвае захоўванне вялікіх бінарных аб'ектаў, падтрымлівае часопісаванне аперацый па змене і даданню дадзеных у БД, можа працаваць у адпаведнасці з парадыгмай Map/Reduce, падтрымлівае рэплікацыю і пабудову адмоваўстойлівых канфігурацый.

Сярод змен у FerretDB 1.0:

  • Рэалізаваны каманды createIndexes і dropIndexes для стварэння і выдаленні аднаго або некалькіх індэксаў да калекцыі.
  • Рэалізавана каманда getMore для вываду новай порцыі выніку, атрыманага пры выкананні каманд, якія вяртаюць курсор, такіх як find і aggregate.
  • Дададзена падтрымка які агрэгуе аператара $sum для вылічэння сумы значэнняў групы.
  • Дададзена падтрымка аператараў $limit і $skip для абмежавання ліку і пропускі дакументаў пры агрэгаванні.
  • Дададзена падтрымка аператара $count для падліку дакументаў пры агрэгаванні.
  • Дададзена падтрымка аператара $unwind для разбору палёў масіва ва ўваходных дакументах і фармаванні спісу з асобным дакументам для кожнага элемента масіва.
  • Дададзена частковая падтрымка каманд collStats, dbStats і dataSize для атрымання статыстыкі аб калекцыі і БД, а таксама памеры дадзеных.

Крыніца: opennet.ru

Дадаць каментар