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.

Через відмінності в семантиці функцій PostgreSQL і MongoDB json, виникла невідповідність у поведінці при порівнянні та впорядкуванні різних типів. Щоб вирішити цю проблему, тепер із 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.