Публикувано е изданието на проекта FerretDB 1.0, което позволява замяна на документно-ориентираната СУБД MongoDB с PostgreSQL без промяна на кода на приложенията. FerretDB е реализиран като прокси-сервер, който трансформира заявките за MongoDB в SQL заявки за PostgreSQL, което позволява да се използва PostgreSQL като фактическо хранилище. Версия 1.0 е обявена за първото стабилно издание, готово за широкообхватна употреба. Кодът е написан на Go и се разпространява под лиценза Apache 2.0.
Основната целева аудитория на FerretDB са потребители, които не използват разширените функции на MongoDB в своите приложения, но желаят да използват напълно открит софтуерен стек. В текущия етап на развитие FerretDB поддържа подмножество от възможностите на MongoDB, най-често използвани в типични приложения. Необходимостта от внедряване на FerretDB може да възникне в резултат на преминаването на MongoDB на несвободна лицензия SSPL, основана на лицензия AGPLv3, но не е отворена, тъй като съдържа дискриминиращо изискване за предоставяне не само на кода на приложението, но и на изходните текстове на всички компоненти, ангажирани в предоставянето на облачната услуга.
MongoDB заема ниша между бързите и мащабируемите системи, работещи с данни в формат ключ/стойност, и релационните СУБД, които са функционални и удобни за създаване на заявки. MongoDB поддържа съхраняване на документи в JSON-подобен формат, предлага достатъчно гъвкави средства за формулиране на заявки, може да създава индекси за различни съхранявани атрибути, ефикасно осигурява съхранението на големи бинарни обекти, поддържа логиране на операциите по изменение и добавяне на данни в БД, може да работи според парадигмата Map/Reduce, поддържа репликация и изграждане на отказоустойчиви конфигурации.
Сред промените в FerretDB 1.0:
- Реализирани са командите createIndexes и dropIndexes за създаване и изтриване на един или няколко индекса за колекция.
- Реализирана е командата getMore за извеждане на нова порция резултати, получени при изпълнението на команди, които връщат курсор, като find и aggregate.
- Добавена е поддръжка на агрегиращия оператор $sum за изчисляване на сумата от стойностите на групата.
- Добавена поддръжка на операторите $limit и $skip за ограничаване и пропускане на документи при агрегиране.
- Добавена поддръжка на оператора $count за броене на документи при агрегиране.
- Добавена поддръжка на оператора $unwind за разбиране на полета от масиви в входящи документи и формиране на списък с отделен документ за всеки елемент от масива.
- Добавена частична поддръжка на командите collStats, dbStats и dataSize за получаване на статистически данни за колекцията и базата данни, както и за размера на данните.
Източник: opennet.ru
