MangoDB модернизирован и теперь меняется на FerretDB

Недавнодней стало известно о запуске проекта FerretDB (ранее MangoDB), которая позволяет вам заменить документно-ориентированную СУБД MongoDB на PostgreSQL без внесения каких-либо изменений в код вашего приложения.

FerretDB реализован как прокси-сервер, который переводит вызовы MongoDB в SQL-запросы к PostgreSQL, что позволяет использовать PostgreSQL в качестве фактического хранилища.

FerretDB (ранее MangoDB) была основана, чтобы стать де-факто заменой MongoDB с открытым исходным кодом. FerretDB — это прокси-сервер с открытым исходным кодом, который преобразует запросы проводного протокола MongoDB в SQL, используя PostgreSQL в качестве ядра базы данных.

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

Целевая аудитория FerretDB — пользователи, которые не используют расширенные возможности MongoDB. в своих приложениях, но хотят использовать полностью открытый программный стек.

На текущем этапе разработки FerretDB он по-прежнему поддерживает только часть функций MongoDB. которые чаще всего используются в типичных приложениях. В будущем они планируют добиться полной поддержки драйверов для MongoDB и предоставить возможность использовать FerretDB в качестве прозрачной замены MongoDB.

Помните, что MongoDB занимает нишу среди быстрых и масштабируемых систем оперирующие данными в формате ключ/значение, и реляционные СУБД, функциональные и удобные в формировании запросов.

Большинству пользователей MongoDB не нужны многие расширенные функции, которые предлагает MongoDB; однако им необходимо простое в использовании решение для базы данных с открытым исходным кодом. Понимая это, FerretDB восполняет этот пробел.

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

В релизе FerretDB 0.1.0 отмечается, что полностью переработан способ получения данных PostgreSQL. Ранее для каждого входящего запроса MongoDB генерировался запрос SQL к PostgreSQL с использованием функций для работы с форматом JSON и фильтрацией результатов на стороне PostgreSQL.

Из-за различий в семантике json-функций PostgreSQL и MongoDB, было несоответствие в поведении при сравнении и заказе разных типов. Для решения этой проблемы теперь из PostgreSQL извлекается выборка избыточных данных и выполняется фильтрация результата на стороне FerretDB, что позволило повторить поведение MongoDB в большинстве ситуаций.

Платой за повышенную совместимость была потеря производительности, который, как ожидается, в будущих выпусках будет компенсирован выборочной фильтрацией на стороне FerretDB только тех запросов, для которых существует расхождение в поведении.

Например, запрос «db.collection.find({_id: 'some-id-value'})» может быть полностью обработан в PostgreSQL. Основной целью проекта на данном этапе разработки является достижение совместимости с MongoDB, а производительность по-прежнему отодвигается на второй план.

Из функциональных изменений в новой версии появилась поддержка всех побитовых операторов, оператора сравнения "$e", а также операторов "$elemMatch" и "$bitsAllClear".

В конце концов для тех, кто хочет узнать об этом больше, они должны знать, что код написан на Go и распространяется под лицензией Apache 2.0 и вы можете проверить его код по следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.