ការចេញផ្សាយ FerretDB 0.1 ដែលជាការអនុវត្តរបស់ MongoDB ផ្អែកលើ PostgreSQL DBMS

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

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

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

អនុញ្ញាតឱ្យយើងចាំថា MongoDB កាន់កាប់កន្លែងពិសេសមួយរវាងប្រព័ន្ធដែលមានល្បឿនលឿន និងអាចធ្វើមាត្រដ្ឋានបាន ដែលដំណើរការទិន្នន័យក្នុងទម្រង់គន្លឹះ/តម្លៃ និង DBMSs ទំនាក់ទំនងដែលមានមុខងារ និងងាយស្រួលក្នុងការបង្កើតសំណួរ។ MongoDB គាំទ្រការរក្សាទុកឯកសារក្នុងទម្រង់ដូច JSON មានភាសាដែលអាចបត់បែនបានសម្រាប់បង្កើតសំណួរ អាចបង្កើតលិបិក្រមសម្រាប់គុណលក្ខណៈដែលបានរក្សាទុកផ្សេងៗ ផ្តល់នូវការផ្ទុកវត្ថុគោលពីរយ៉ាងមានប្រសិទ្ធភាព គាំទ្រការកត់ត្រាប្រតិបត្តិការសម្រាប់ការផ្លាស់ប្តូរ និងបន្ថែមទិន្នន័យទៅក្នុងមូលដ្ឋានទិន្នន័យ អាច ធ្វើការដោយអនុលោមតាមផែនទី/កាត់បន្ថយ គំនូសតាង គាំទ្រការចម្លង និងការស្ថាបនាការកំណត់រចនាសម្ព័ន្ធដែលអត់ឱនចំពោះកំហុស។

В выпуске 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, а производительность пока отодвигается на второй план. Из функциональных изменений в новой версии отмечается поддержка всех битовых операторов, оператора сравнения «$eq», а также операторов «$elemMatch» и «$bitsAllClear».

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់