The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск FerretDB 0.3, реализации MongoDB на базе СУБД PostgreSQL

02.06.2022 11:32

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

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

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

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

В выпуске FerretDB 0.3 реализована команда findAndModify изменяющая документ, но возвращающая его первоначальную версию. Реализованы операторы обновления полей - $inc и $set. Добавлена поддержка сортировки скалярных типов данных.

  1. Главная ссылка к новости (https://github.com/FerretDB/Fe...)
  2. OpenNews: Выпуск FerretDB 0.1, реализации MongoDB на базе СУБД PostgreSQL
  3. OpenNews: Проект MangoDB развивает реализацию протокола СУБД MongoDB поверх PostgreSQL
  4. OpenNews: Проект RethinkDB выкуплен для передачи сообществу
  5. OpenNews: Стабильный релиз СУБД FoundationDB 6.0, развиваемой компанией Apple
  6. OpenNews: Доступна документо-ориентированная СУБД MongoDB 5.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57290-ferretdb
Ключевые слова: ferretdb, mongodb
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:37, 02/06/2022 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     
  • 1.2, Балабол (?), 12:53, 02/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Задался вопросом, а нафига собственно? Пока не почитал лицензию mongodb (SSPL).
    Собственно хочу сказать инвестору FerretDB: ах тыж хитрая жопа.джпг
     
     
  • 2.3, Аноним (3), 13:43, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Возникает вопрос: а как этот инвестор будет отбивать свои инвестиции?
    В такой схеме, если клиенту понадобится платная поддержка, то логичнее будет связаться со спецами по постгресу.
     
     
  • 3.16, Аноним (16), 16:58, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Проект можно развивать и на донаты.  
     
     
  • 4.32, Аноним (3), 15:24, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как отбивать с донатов инвестиции?
     
  • 2.4, Аноним (4), 13:46, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    С русиш айпи теперь и документацию монги хрен почитаешь
     
     
  • 3.7, Аноним (7), 14:20, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Лол, что значит, "теперь"? Ты вчера родился, или правда не в курсе? Я уже много лет вижу самую разнообразную дискриминацию в виде перекрытого доступа к информационным ресурсам. Таблички в духе "доступ с этого айпи запрещён" намекают. Не, ну ты понял, доступ с моего айпи запрещён?

    А что касается монги, так что-то не удивлён.

     
     
  • 4.28, Просто (?), 08:27, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это да, а еще называют себя толерантными..)

    Но иногда есть и случаи, когда провайдеры криворуки.
    С сетей Ростелекома нет доступа к документации postfix, к примеру.
    А все из-за того, что они поменяли какое-то время назад у себя что-то в конфигурации.

    С тех пор подключение выглядит так:
    ip a:
    ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp
    inet x.x.x.x peer 10.181.192.1/32 scope global ppp0

    ip r:
    default dev ppp0 scope link
    10.181.192.1 dev ppp0 proto kernel scope link src x.x.x.x

    10.181.192.1 - это то, что "новое". Раньше этого адреса не фигурировало. Ну, года два назад так.

     
     
  • 5.29, Просто (?), 10:37, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Добавлю...

    ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3
        link/ppp
        inet x.x.x.x peer 89.239.189.2/32 scope global ppp0
    Когда у коннекта pppoe Ростелекома пир указан такой, то все работает, проблем нет.

    ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3
        link/ppp
        inet x.x.x.x peer 10.181.192.1/32 scope global ppp0
    Когда там указан такой пир, то доступ до сайта postfix "блокируется".

    Я пытался пробиться через тех.поддержку Ростелекома, но, увы, это то, чем Ростелеком печально известен.

     
  • 2.9, Аноним (9), 14:31, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    т.е. вопросы из разряда, а что там с производительностью в этой погремушке тебя мало интересуют. А это просто адаптер, над не семом быстром Го над не самой быстрой базой Постгрей. Напомню что производительность монги на некоторых задачах просто феноменальная.  
     
     
  • 3.10, Аноним (10), 14:59, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > производительность монги на некоторых задачах просто феноменальная.  

    обоснуй (если речь не о замерах под фенобарбиталом)

     
     
  • 4.11, Аноним (11), 15:49, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Что тебе обосновать что на перегоне данных из одного формата в другой теряешь время? Или что Го медленнее C++ так то есть полно бенчей https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-gpp.htm

    Но конкретно тебе я бы посоветовал семки грызть в падике сюда больше не заходи.  

     
     
  • 5.13, Rj (?), 16:19, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обосновать в каких задачах скорость mongo феноменальная.
     
  • 5.20, Аноним (20), 18:42, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    1. В Posgres есть встроенная поддержка jsonb и это не TEXT, а именно jsonb объекты с маппингом типов полей на типы posgres и возможностью добавлять индексы на поля и значения jsonb
    2. Потери производительности и баги скорее всего будут на начальном этапе 100%, т.к. вряд ли Posgres сможет реализовать совсем все фичи спец DB для json
     
     
  • 6.31, Аноним (3), 15:23, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, но jsonb работает более-менее быстро, если маленький (по-моему, в пределах 4 Кб).
    См. доклады Бартунова, например.
     
  • 5.30, Аноним (3), 15:22, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Или что Го медленнее C++ так то есть полно бенчей

    Только на hello world. В остальных случаях - не всё так однозначно.

     
  • 3.36, ptr (??), 13:13, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    "Самой быстрой" БД не бывает. Например, нарывался на случаи, когда PostgreSQL существенно выигрывал в производительности у MS SQL (например, благодаря массивам или нелогируемым таблицам). Реже - у Oracle (например, когда много вызовов математики через PL/Python или PL/R). Так что от задач всё немало зависит.
     
  • 2.17, пох. (?), 17:02, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Задался вопросом, а нафига собственно?

    патамуштамогет!

    > Пока не почитал лицензию mongodb

    какая сура корана воспрещает правоверному пользоваться открытой версией?

    И, кстати, самостоятельно ее развивать может оказаться и попроще чем пытаться приляпать совершенно чуждый интерфейс к sql.

     
     
  • 3.22, Аноним (22), 19:31, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > И, кстати, самостоятельно ее развивать может оказаться и попроще чем пытаться приляпать совершенно чуждый интерфейс к sql.

    Полового из ДЦ видно за версту. В какой суре корана написано, что манипуляция данными — чуждый интерфейс к sql? Или может будешь оспаривать применимость паттерна «Адаптер»?

     
     
  • 4.35, Аноним (35), 11:15, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Оспаривается не применимость, а производительность. Адаптер не может не накладывать дополнительные расходы.  А это уже влияет на коэффициент ненужность, вплоть до полное ненужности.  
     
     
  • 5.37, Аноним (22), 18:00, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Оспаривается не применимость, а производительность.

    Прочитай внимательно сообщение поха.

    > Адаптер не может не накладывать дополнительные расходы.

    И что? В зависимости от задачи может так статься, что меня эти расходы вполне устроят. Только опеннетная школота строит бесконечно скалируемый хайлоад на любой чих.

     
     
  • 6.39, Аноним (3), 14:47, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Наоборот, настоящие труЪ олды из шестого "Б" считают, что одного апача с mod_php и мускулем хватит всем. Универсальность, KISS и вот этого вот всё, никаких смузи-девляпсовских nginx, постгресов и кубернетисов.
     
  • 2.38, Аноним (38), 09:03, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Отказоустойчивого синхронного multimaster кластера нет, вместо этого  перед бд появится адаптер который сам по себе может сломаться.

    Низкая производительность, которая всегда будет значительно ниже прямой работы с бд. И сама mongodb скорее всего быстрее postgresql

    Реализовано только часть команд mongodb

    Может быть лучше старую mongodb гонять чем этот адаптер?

     
     
  • 3.40, Аноним (3), 14:55, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Отказоустойчивого синхронного multimaster кластера нет

    А у монги, можно подумать, есть? Там тоже мастер только один, реплики проксируют к нему запросы на запись.

    Полноценный мультимастер только там, где есть полноценное шардирование - elasticsearch, clickhouse.

    > вместо этого  перед бд появится адаптер который сам по себе может сломаться.

    Достаточно бессмысленный аргумент - он как бы должен символизировать, что "хрупкость" обертки+постгреса больше, чем "хрупкость" монги. Но для этого нужно доказать, что "хрупкость" постгреса больше либо равна "хрупкости" монги, что пока ещё не доказано.

    > Низкая производительность, которая всегда будет значительно ниже прямой работы с бд.

    Опять же, надо сравнивать с монгой, а не с постгресом.

    > И сама mongodb скорее всего быстрее postgresql

    А вот это неплохо было бы доказать. У любого индивида с IQ выше хлебушка уже давно должна была развиться идиосинкразия на аргументы вида "хайли лайкли".

     

  • 1.8, T00 (?), 14:24, 02/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это типо BolgenDB, или что то серьёзное?
     
     
  • 2.18, пох. (?), 17:03, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не, не на расте, так что несерьезное в принципе.

     

  • 1.19, Аноним (19), 17:21, 02/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Прокси сервер обёртка над обёрткой над врапером. Это всё улучшает производительность. Мы ведь любим монгу и постргресс за это.
     
  • 1.25, Robin Hood (?), 01:18, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Я хз че это. Не нужно.
     
     
  • 2.26, Аноним (26), 02:35, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    сказал как отрезал
     

  • 1.27, Аноним (27), 07:55, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Лучше бы на SQLite.
     
     
  • 2.33, Аноним (22), 16:33, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А если серверов больше одного?
     
     
  • 3.34, Аноним (35), 11:13, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    rqlite https://www.opennet.me/opennews/art.shtml?num=56600 или любой аналог
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру