Запуск новая версия проекта FerretDB 1.0, который позволяет заменить документо-ориентированную СУБД MongoDB на PostgreSQL без внесения каких-либо изменений в код приложения. FerretDB реализован как прокси-сервер, который транслирует вызовы MongoDB в SQL-запросах в PostgreSQL, что позволяет использовать PostgreSQL в качестве фактического хранилища.
Версия 1.0 отмечена как первая стабильная версия, готовая для общего использования. Основная целевая аудитория FerretDB — пользователи, которые не используют расширенные возможности MongoDB в своих приложениях, но хотят использовать полностью открытый программный стек.
На нынешнем этапе своего развития, FerretDB поддерживает часть функций MongoDB. которые чаще всего используются в типичных приложениях. Необходимость во внедрении FerretDB может возникнуть в связи с переходом MongoDB на несвободную лицензию SSPL, которая основана на лицензии AGPLv3, но не является открытым исходным кодом, так как содержит дискриминационное требование поставлять под лицензию SSPL не только код самого приложения, но и исходные коды всех компонентов, задействованных в предоставлении облачных услуг.
MongoDB занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными типа «ключ-значение», и СУБД реляционные базы данных, которые функциональны и просты в использовании. MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык построения запросов, может создавать индексы для различных хранимых атрибутов, обеспечивает эффективное хранение бинарных больших объектов, поддерживает операции логирования для изменения и добавления данных в базу данных, умеет работать в соответствии с парадигмой Map/Reduce поддерживает репликацию и построение отказоустойчивых конфигураций.
Основные новинки FerretDB 1.0
В представленной новой версии подчеркивается, что реализованы команды createIndexes и dropIndexes для создания и размещения одного или нескольких индексов в коллекции в дополнение к команде getMore был реализован для отображения нового фрагмента полученного результата. от выполнения команд, возвращающих курсор, таких как find и add.
Еще одно из изменений, которое выделяется из новой версии добавлена поддержка оператора агрегации $sum для вычисления суммы групповых значений, а также того, что было добавлено поддержка операторов $limit и $skip для ограничения количества и пропуска документов при добавлении, а также добавлена поддержка оператора $count для подсчета документов при добавлении.
В дополнение к этому также отмечается, что добавлена поддержка оператора $unwind для разбора полей массива во входящих документах и формирования списка с отдельным документом для каждого элемента массива, а также добавлена частичная поддержка команд collStats, dbStats и dataSize для получения статистики коллекции и базы данных, а также размера данных.
Из другие изменения, которые выделяются новой версии:
- Итераторы теперь используются для сортировки, ограничения, пропуска и проекции.
- бамп зависимости
- Усовершенствования отслеживания ресурсов
- Добавлены тесты для аргумента «пропустить» функций «найти» и «подсчитать».
- Правильно закрыть итератор
- Улучшения инициализации больших чисел в тестовых данных
В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.
Тем, кто интересуется кодом, следует знать, что он написан на Go и распространяется под лицензией Apache 2.0.
И они должны знать, что лучший способ протестировать FerretDB — изменить ее и запустить на хосте. (Linux, macOS или Windows) с PostgreSQL и другими зависимостями, работающими внутри контейнеров Docker через Docker Compose.
В Linux докер должен быть установлен на хосте. В macOS и Windows необходимо использовать Docker Desktop, а в Windows его необходимо настроить для использования WSL 2 без какого-либо распространения; все команды должны выполняться на хосте.