The OpenNET Project / Index page

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

Microsoft открыл код СУБД DocumentDB, основанной на PostgreSQL

27.01.2025 11:46

Компания Microsoft объявила об открытии кода проекта DocumentDB, который может использоваться как отдельная NoSQL СУБД, как платформа для создания собственных систем хранения или как дополнение для хранения данных в формате BSON в СУБД PostgreSQL. На практике DocumentDB применяется в Microsoft в качестве основы продукта "Azure Cosmos DB for MongoDB", предоставляющего интерфейс, совместимый с документо-ориентированной СУБД MongoDB. Код проекта написан на языке Си и распространяется под лицензией MIT. Движок DocumentDB реализован в форме надстройки над СУБД PostgreSQL.

Как и в MongoDB для хранения структурированных документов в DocumentDB задействован JSON-подобный формат BSON (Bin­ary JSON), позволяющий создавать иерархические структуры, в которых одни документы и массивы могут встраиваться в другие документы и массивы. Ключевым отличием от JSON является использование сериализации данных в бинарное представление. Проект предоставляет как NoSQL-операции для создания, чтения, обновления и удаления данных в формате BSON, так и API для штатного PostgreSQL (DocumentDB может рассматриваться как вариант PostgreSQL с поддержкой BSON). В DocumentDB могут использоваться возможности полнотекстового поиска, операции над векторными и геопространственными типами данных.

Проект состоит из двух компонентов:

  • pg_documentdb_core - расширение к PostgreSQL с реализацией типа BSON и операций для работы в PostgreSQL с данными BSON.
  • pg_documentdb - общедоступный API DocumentDB с базовыми операциями для работы с документами в формате BSON, обработки запросов и управления индексами.

Первый выпуск DocumentDB предоставляет поддержку операций CRUD (создание, чтение, обновление, удаление), индексы для отдельных полей BSON, индексы для полнотекстового поиска (совместимы с RUM), векторные и геопространственные запросы (совместимые с pg_vector и postgis), возможности для формирования запросов и агрегирования данных BSON.

На использование DocumentDB уже перешёл проект FerretDB, развивающий реализацию СУБД MongoDB на базе СУБД PostgreSQL. FerretDB позволяет без внесения изменений в код приложений заменить проприетарную документо-ориентированную СУБД MongoDB на полностью открытый программный стек, основанный на PostgreSQL. Необходимость замены MongoDB объясняется переходом данной СУБД на лицензию SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса.

Изначально работа FerretDB сводилась к трансляции обращений к MongoDB в SQL-запросы к PostgreSQL, но начиная с версии FerretDB 2.0, которая находится на стадии кандидата в релизы, для реализации поддержки формата BSON задействовано PosgreSQL-расширение DocumentDB. Переход на использование DocumentDB позволил более чем в 20 раз повысить производительность FerretDB для некоторых видов нагрузки. Из других новшеств FerretDB 2.0 отмечается улучшение совместимости с MongoDB, возможность репликации и поддержка векторного поиска. Код FerretDB написан на языке Go и распространяется под лицензией Apache 2.0.

  1. Главная ссылка к новости (https://blog.ferretdb.io/ferre...)
  2. OpenNews: Первый стабильный выпуск FerretDB, реализации MongoDB на базе СУБД PostgreSQL
  3. OpenNews: Microsoft поглотил компанию Citus, развивающую СУБД на базе PostgreSQL
  4. OpenNews: Microsoft Research открыл код быстрого хранилища в формате ключ/значение
  5. OpenNews: Microsoft открыл код хранилища Garnet, совместимого с Redis
  6. OpenNews: Microsoft портировал JavaScript-движок ChakraCore для Linux и maсOS
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62621-documentdb
Ключевые слова: documentdb, ferretdb, postgresql, microsoft, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:31, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тем временем AWS DocumentDB в ах*е от хуцпы мелкомягких.
     
     
  • 2.3, Аноним (3), 12:37, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну AWS DocumentDB относительно недавно появился, а СУБД Azure DocumentDB уже лет 15 как существует, его даже переименовать успели в Azure Cosmos DB.
     

  • 1.2, xsignal (ok), 12:36, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Кому может понадобится код от Microsoft)) Если только посмотреть, как не надо делать =)
     
     
  • 2.4, Максим Белый (?), 12:37, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Понадобится
    Уже в FerretDB затащили
     
     
  • 3.7, chdlb (?), 13:00, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    FerretDB - а кому оно надо? любителем монго-кактусов?
     
     
  • 4.24, User (??), 13:33, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну, я могу себе представить контору, у которой экспертиза по postgres вот есть - а по mongo "нет и через забор не надь" - и тут "нате-на-лопате" коробочное решение с прикрученной на изоленту mongo'й нарисовалось - но в реальной жизни допущений чот многовато выходит...
     
     
  • 5.37, chdlb (?), 14:47, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    если отсутствует экспертиза по монге и ты не хочешь ее получать, то тебе нафиг не надо никакая монго ни та ни поверз постгреса
     
     
  • 6.40, User (??), 14:59, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > если отсутствует экспертиза по монге и ты не хочешь ее получать, то
    > тебе нафиг не надо никакая монго ни та ни поверз постгреса

    Спасибо, кэп!

     
  • 2.18, User (??), 13:17, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    На opennet'е? Примерно "никому", у всех жеж "лапки", да и задач-то под кроватью таких нет.
    А так вот разработчикам ferretdb вот понадобилось (Зачем кому-нибудь сам ferretdb нужен - не спрашивай) - судя по всему, у MS получилось мал-мала лучше, чем у них самих.
    Конкретное вот облачное решение чтоб с самой mongo'й не связываться - вообще дофига кому, да.
     
     
  • 3.39, Аноним (39), 14:57, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну на опеннете ведь как: закрытый код — «а что это тут делает»? Открыли код — «от корпораций нам ничего не надо!». Не в первый и не в десятый раз уже.
     
  • 2.52, Аноним (52), 19:55, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Если только посмотреть, как не надо делать =)

    Для этого линукс есть. Сорцы открыты, бери и учись как делать не нужно.

     
  • 2.59, al (??), 02:16, 28/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дейтвительно, кому мог бы понадобиться, например, VS Code - единственный годный редактор под линух.
     

  • 1.5, Аноним (5), 12:38, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Надеюсь что это эффективнее jsonb. Не знаю что за имбeцилы в постгресе писали jsonb, где судя по всему для каждого вложенного словаря/массива хранится 4 или 8 байт его длины, из-за чего относительно json его раздувает в пару раз. Поэтому значительно удобнее и эффективнее в базе хранить не json а протобуфы (схема и прямая/обратная совместимость бонусом).
     
     
  • 2.6, Аноним (6), 13:00, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Напиши лучше
     
  • 2.8, chdlb (?), 13:02, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –4 +/
    возьми текст JSON в UTF-8 и засунь это в обычный бинарь, можешь предварительно сжать gzip, цена такой операции копейки, вполне примелимо, за будешь за вендор-лок к БД
     
     
  • 3.43, Аноним (43), 15:11, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >возьми текст JSON в UTF-8 и засунь это в обычный бинарь

    Открой для себя MessagePack - It's like JSON, but fast and small

     
  • 2.26, User (??), 13:48, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Только вот работать с этим придется - ну, на уровне приложения, а не с помощью СУБД со всеми вытекающими, ага. Ложь (Не "клади") паркетом под себя и не мучай слоника, чоужтам - смотрите у всех датасатанистов страны ))).
    А так-то postgresql даже индексить тот jsonb умеет - была б реализация чуть менее уродлива (Примерно со всех сторон - от функций по работе С, которые разок уже менялись, до - да-да, структуры хранения и, как следствие, эффективности работы с данными) - цены б ей не было - но маемо шо маемо.
     
  • 2.47, slew (ok), 16:48, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Не знаю что за имбeцилы в постгресе писали jsonb, где судя по всему для каждого вложенного словаря/массива хранится 4 или 8 байт его длины,

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

     
     
  • 3.49, turbo2001 (ok), 18:03, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    1 байт длины не подойдет?
     
  • 2.53, голос_из_леса (ok), 22:16, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    "640 КБ должно хватить для любых задач!" (c)
     
  • 2.55, Карлос Сношайтилис (ok), 23:11, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А теперь сделай эффективный поиск по этому всему...
     
  • 2.57, fuggy (ok), 00:14, 28/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так jsonb можно ложить в compressed колонку хранения, абсолютно прозрачно. К тому же у jsonb работают все индексы и быстрый доступ по jsonpath в отличие от protobuf. Так тогда можно и сериализованный byte array или msgpack сохранять, если индексы не нужны.
     

  • 1.11, Аноним (-), 13:09, 27/01/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +3 +/
     

  • 1.12, Илья (??), 13:11, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите, а какая сейчас самая вменяемая реляционная БД без встроенных хлеборкзки и компаса?

    Это же просто набор таблиц, селекты, транцакции... а руководство только к одной MSSQL - тысяч пять строк

     
     
  • 2.17, Аноним (-), 13:16, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  Подскажите, а какая сейчас самая вменяемая реляционная БД
    > без встроенных хлеборкзки и компаса?

    SQLite)))
    Легкая, встравается во что угодно, даже в компас и хлеборезку!
    Свободная, можно использовать где и как угодно.
    Есть конечно чуток минусов, но где их нет?)(

     
     
  • 3.35, Аноним (35), 14:42, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Голосую за firebird!
     
  • 2.34, Аноним (6), 14:42, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Напиши свое в таком случае под свои хотелки.
     
  • 2.38, chdlb (?), 14:49, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    просто не используй все хрень сверху ее реляционных возможностей и это будет правильно

    а так-то уже и JS в MySQL завезли в превью билдах

     

  • 1.13, Аноним (-), 13:14, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    А мелкософт молодцы...
    Взяли готовое решение, которые написали немамонты из PostgreSQL, дописали чуток кода и теперь рубят на этом бабки. Причем вклада в сам PostgreSQL от них практически нет. Как напр. и в ядро линя. Хотя на азуре они зарабатывают больше чем на десктопной винде.
     
     
     
    Часть нити удалена модератором

  • 3.21, Аноним (-), 13:25, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > любой вор/паразит.

    Вор просто забрал бы себе и запретил остальных пользоваться - примерно как ГНУтики просто взяли кода с BSD/MIT и заразили гнураком.
    Паразит только использовал не давая ничего взамен.

    А тут типичный симбионт - он использует существующий код, поддерживая и улучшая его, тк от этого зависит его благосостояние.
    И когда таких много - например 80% кода в ядре пишут корпорации, то вопрос "а кто теперь васяны, которые только пользуются ядром?" становится не таким однозначным))
    Благо на мнение васянов кладут огромный болт.

     
     
  • 4.30, Аноним (30), 14:13, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > 80% кода в ядре пишут корпорации

    Нет. 100% кода пишет сам.

     
  • 2.22, User (??), 13:28, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эээээ... да собственно примерно наоборот же. "Немамонты" написали, "ну, такоЭ" - другие товарищи из ferretdb попытались это "ну очень такоЭ" использовать - вышло "ну эдакое". Потом пришли MS и показали, "как надо" и любители "эдакого" радостно на это "как надо" и переключились.
    Вопрос "кто мешал "не мамонтом" сделать у себя нормальную работу с json" оставим пока за скобками...
     
     
  • 3.29, Аноним (-), 14:07, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    К чему все твои "ну, такоЭ" и "ну эдакое"?
    Речь о том, что мелкомягкие опять зарабатывают деньги на написаном другими коде. Практически не вкладываясь в него. Причем из-за олигополии облачных провайдеров, они со своим Азуром получают огромную фору по сравнению со всеми другими.
     
     
  • 4.31, User (??), 14:19, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > К чему все твои "ну, такоЭ" и "ну эдакое"?
    > Речь о том, что мелкомягкие опять зарабатывают деньги на написаном другими коде.
    > Практически не вкладываясь в него. Причем из-за олигополии облачных провайдеров, они
    > со своим Азуром получают огромную фору по сравнению со всеми другими.

    К тому, что вот в данном случае зарабатывать на написанном "не мамонтами" не выходит, пришлось самим писать.

     
  • 4.50, YetAnotherOnanym (ok), 18:08, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно подумать, опеннетовкие анонимы не зарабатывают на написанном другими коде. Практически не вкладываясь в него.
     
  • 2.33, Аноним (32), 14:25, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Бузинес все правильно сделали.
     
  • 2.51, Аноним (51), 18:35, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Разработка софта *для* платформы — а Постгрес это платформа — большое и важное дело. Претензий к Блендеру или Гимпу что не коммитят в ядро почему-то не возникает. Но не дай бог Майкрософту выпустить любой опенсорс, и опеннет как с цепи срывается.
     
  • 2.56, fuggy (ok), 23:18, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, "свободная" лицензия, по мнению некоторых которые не признают OSI/FSF, оказалась недостаточно свободной, что пришлось заменять. Во-вторых, навернули уродливый mongo api поверх RDBMS, можно вставлять BSON, а также можно делать CRUD и пару индексов на сдачу. И ещё не известно что по бенчмаркам, ведь их пока не показали, надо подождать. В-третьих, взяли название у amazon documentdb чтобы успешнее конкурировать в поиске.
     

  • 1.27, Аноним (27), 13:49, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >для хранения данных в формате BSON в СУБД PostgreSQL

    Но CBOR же намного лучше. BSON - это первый блин комом. Вернее далеко не первый.

     
     
  • 2.58, fuggy (ok), 00:58, 28/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Bson поддерживает рандомное чтение, в отличие от клона msgpack. Что критически важно для базы данных. Так что твой аргумент полностью не обоснован.
     

  • 1.28, Аноним (1), 14:05, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Движок DocumentDB реализован в форме надстройки над СУБД PostgreSQL.

    Стареют NoSQLники. Лет 15 назад за такие идеи затролили и прогнали бы из хипстеров.

     
     
  • 2.44, нах. (?), 15:31, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так это ж не они, это те самые тролли и есть. "Зачем вам монга, она лицензию требует, без штанов останетесь - вон нате вам нашу аналогов не... то есть точно такую же, но шва6одную documentDB - смотрите, смотрите, все как вы любите!"
    Те и повелись. Опа - а там postgres.

     
  • 2.45, Tron is Whistling (?), 15:51, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да они просто внезапно выяснили, что весь их NoSQL прекрасно запихивается в RDBMS, и ведёт себя при этом не хуже.
     
     
  • 3.46, ms (??), 16:21, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    и вовсе даже не они!
     
  • 3.54, fuggy (ok), 23:03, 27/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Только отваливаются транзакции, acid, джойны, оконные и агрегатные функции. А так да json можно продолжать пихать в файлы.
     

  • 1.48, Аноним (48), 17:58, 27/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    FerretDB не осилили транзакции. Так что не стоит всерьез рассматривать эту поделку.
    Напомню, в Mongo они есть
     

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



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

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