Перший стабільний випуск 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

Додати коментар або відгук