Релиз FerretDB 2.0, реализации MongoDB на базе СУБД PostgreSQL

Представлен выпуск проекта FerretDB 2.0, позволяющего заменить проприетарную документо-ориентированную СУБД MongoDB на полностью открытый программный стек, основанный на PostgreSQL, без внесения изменений в код приложений. Код написан на языке Go и распространяется под лицензией Apache 2.0. Выпуск отмечен как готовый для рабочих внедрений.

Основной целевой аудиторией FerretDB являются пользователи MongoDB, желающие использовать полностью открытый программный стек. FerretDB поддерживает подмножество возможностей MongoDB, наиболее часто применяемых в типовых приложениях. Необходимость внедрения FerretDB может возникнуть в связи с переходом MongoDB на несвободную лицензию SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса.

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

Ключевым изменением в версии FerretDB 2.0 является переход на использование DocumentDB, открытого компанией Microsoft дополнения к PostgreSQL, реализующего возможность хранения данных в JSON-подобном формате BSON (Bin­ary JSON), совместимом с MongoDB. Изначально работа FerretDB сводилась к трансляции обращений к MongoDB в SQL-запросы к PostgreSQL. Переход на использование DocumentDB позволил более чем в 20 раз повысить производительность FerretDB для некоторых видов нагрузки. Из других новшеств FerretDB 2.0 отмечается улучшение совместимости с MongoDB, возможность репликации и поддержка векторного поиска.

Release. Ссылка here.