Доступен (https://www.mongodb.com/blog/post/announcing-the-general-ava... стабильный выпуск документо-ориентированной СУБД MongoDB 3.6 (https://www.mongodb.com/mongodb-3.6), которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3. Сборки MongoDB 3.6 сформированы (https://www.mongodb.org/downloads#community) для Linux, Windows и macOS.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Особенности (http://docs.mongodb.org/manual/release-notes/3.6/) нового (https://www.mongodb.com/mongodb-3.6) выпуска (https://www.mongodb.com/blog/post/whats-new-in-mongodb-36-pa...:
- С целью повышения безопасности управляющий процесс MongoDB теперь привязывается к сетевому адресу localhost и принимает только локальные соединение. Без данной привязки администраторы часто по недосмотру открывали доступ к БД для внешних сетей без применения аутентификации, что приводило (https://www.opennet.me/opennews/art.shtml?num=41661) к массовым утечкам данных (https://www.opennet.me/opennews/art.shtml?num=43540) и атакам (https://www.opennet.me/opennews/art.shtml?num=45833) вредоносных шифровальщиков (https://www.opennet.me/opennews/art.shtml?num=45817). Для дополнительной защиты конфигураций, которым необходим приём соединений из внешних сетей, предоставлена возможность определения белых списков адресов с которых разрешено подключение к БД;- Добавлены "потоки изменений" (оператор $changeStream и метод watch), при помощи которых можно организовать отправку приложениям уведомлений об изменении данных в БД. Сведения об изменениях поступают в режиме реального времени и позволяют создавать приложения с использованием методов реактивного (https://ru.wikipedia.org/wiki/%D0%A0%D0%... и событийно-ориентированного программирования (https://ru.wikipedia.org/wiki/%D0%A1%D0%.... Необходимые события можно отсеивать и агрегировать при помощи операторов $match, $project и $redact;
- Возможность автоматического осуществления повторных попыток выполнения операций записи, завершившихся сбоем, без необходимости реализации логики обработки сбоев на стороне приложения. Например, в случае проблем с сетью будут осуществляться попытки повторного выполнения операции записи до тех пор пока она не увенчается успехом;
- Реализация средств для проверки корректности структуры документов (Schema validation), используя синтаксис, определённый в стандарте IETF JSON Schema. Разработчики теперь могут явно описать структуру документа для каждой коллекции, определив правила вплоть до отдельных столбцов во вложенных массивах. В зависимости от стадий выполнения или приложений можно активировать жесткую проверку соответствия заданным правилам, выключать её или применять только к отдельным наборам полей;
- Предоставлена порция новых возможностей для решения задач аналитики. Реализованы новые операции агрегирования данных ($arrayToObject, $objectToArray, $mergeObjects, $dateFromString, $dateFromParts, $dateToParts). Добавлен оператор $lookup (https://docs.mongodb.com/manual/reference/operator/aggregati... позволяющий формировать выборки, похожие (https://docs.mongodb.com/manual/reference/operator/aggregati... на подзапросы и JOIN-слияния в SQL. Подготовлен модуль для интеграции с системами бизнес-анализа (Tableau, Qlik, SAP Business Objects), позволяющий использовать данные MongoDB в системах аналитики и визуализации, рассчитанных на использование SQL. Подготовлен новый драйвер для языка R, поддерживающий тип BSON;
- Поддержка причинной консистентности (https://ru.wikipedia.org/wiki/%D0%9F%D1%... (causal consistency (https://docs.mongodb.com/master/core/read-isolation-consiste... гарантирующей, что каждая операция чтения в рамках клиентского сеанса всегда учитывает результат предыдущей операции записи, независимо от того какая реплика использовалась для выполнения запроса. Иными словами обеспечивается логическая целостность порядка операций чтения и записи, независимо от того к какому узлу кластера MongoDB обратился клиент;- Возможность обновления группы элементом в массиве. Оператор $[] позволяет разом обновить значение всех элеменов, а оператор $[{identifier}] часть элементов массива, которые удовлетворяют заданному фильтру (задаётся через опцию arrayFilters);
- Добавлена поддержка сжатия трафика между клиентом и сервером;
- Прекращена (https://www.opennet.me/opennews/art.shtml?num=47093) поддержка платформы Solaris.URL: https://www.mongodb.com/blog/post/announcing-the-general-ava...
Новость: http://www.opennet.me/opennews/art.shtml?num=47702
Чем отличается от Elasticsearch?
Тем, что работает.
Работает и MongoDB и Elasticsearch.
Только MongoDB - БД, а ES - поисковый движок (да, я знаю, что его тоже можно использовать как БД).
Разные продукты, разные задачи. Сравнивать всё равно что пчелу и осу.
БД у ElasticSearch же Lucene, сам он только обёртка
Есть SphinxSearch с теми же фичами, только с ним можно как с MySQL работать на простых вещах
SphinxSearch настраивать сложнее, менее гибкий + нужно иметь основную СУБД с данными + нет нормального ширдинга + отложенная индексация.
Тут под задачи нужно смотреть, ES больше ресурсов жрёт.
а вы собрались юзать ES без основной базы данных? Рили?
> а вы собрались юзать ES без основной базы данных? Рили?В чём сложность?
Данные ES теряет. А так сложностей нет.
Запомните, никогда не завязывайтесь на использование es как бд. Это аукнется в перспективе.
Да и направление у конторы сейчас стремительное в сторону вендорлока, перелазим на солр потихоньку. Он похорошел под воздействием конкурентов.
А можно поподробнее??? По первому пункту проблем особых не было, да и по второму (хотя уже давно не слежу за развитием проекта)
А чем монга отличается от апача?
Только тем, что "Апаче" - бренд-зонтик для opensource продуктов
Колёсами
Главное что документоориентированная, а то набегут sjw и обвинят в неправильной ориентации
Там уже ввели поддержку транзакций и добавили язык запросов, не использующий идиотский, для этого, JSON?
>язык запросов, не использующий идиотский, для этого, JSONТы бы почитал (если подумать не получилось) для чего JSON придуман. Он тут вполне уместен, уж точно уместнее чисто текстового SQLя.
>ввели поддержку транзакций
Чтобы получился тормозной и не масштабируемый Постгрес?
который уделывает это творение в разы по скорости
> Ты бы почитал (если подумать не получилось) для чего JSON придуман. Он тут вполне уместен, уж точно уместнее чисто текстового SQLя.Я то как раз знаю, что JSON придуман вовсе не для использования в качестве языка запросов базы данных.
> Чтобы получился тормозной и не масштабируемый Постгрес?
Чтобы этим можно было пользоваться для хоть сколько нибудь серьёзных целей.
>JSON придуман вовсе не для использования в качестве языка запросов базы данныхJSON это не язык.
>Чтобы этим можно было пользоваться для хоть сколько нибудь серьёзных целей.
Ну куда уж ИМ (https://www.mongodb.com/who-uses-mongodb) до твоих серьёзных целей.
А ничего что монга сама использует "тормозной и немасштабируемый постгрес"?https://www.linkedin.com/pulse/mongodb-32-now-powered-postgr.../
Это удар ниже пояса! :-)
Хотя жабшикам туда бить бесполезно :))))))
Вы бы разобрались, о чем там речь, прежде чем позориться.
https://www.mongodb.com/blog/post/introducing-mongo-connector
> Поддержка причинной консистентности (causal consistency), гарантирующей, что каждая операция чтения в рамках клиентского сеанса всегда учитывает результат предыдущей операции записи— а правда что mongodb быстро пишет?
— да, только правда при чтении такая ерунда получается...
А ничего, что монга на С++, а не на лютой жабе? Чё влез то сюда?
С непредсказуемым расходом оперативы все также плачевно?
Настройки по умолчанию предполагают что все ресурсы сервера база забирет на себя. И если вы хотите что-то ещё на нём запускать, нужно эти самые ресурсы базе ограничить.
Плюс к этому база сильно кэширует данные в память для ускорения работы и запросто сожрёт всё что ей дать, если конечно данных в базе не меньше чем количество выделенной памяти.
Уже несколько лет как крутилку сделали. Читать маны не пробовал?
можно на пальцах про причинную консистентность? что сие? какой пример ее продемонстрирует?
Поскольку вот это: https://www.mongodb.com/faq#acid-transactions
Пытаются хоть как-то...
> процесс MongoDB теперь привязывается к сетевому адресу localhost и принимает только локальные соединениеЭто называется "назло маме отморожу уши".
Написано же, что это когда гарантируется чтение записанных ранее данных, даже если запись была на другом хосте.
Без подобной гарантии, если, например, есть задержка репликации в 10мс, была запись на один сервер, а через 5мс попытка чтения с другого, то вернутся старые данные.
Ты сам, то понял что написал?
Он, похоже, комментарием ошибся :-)
>> процесс MongoDB теперь привязывается к сетевому адресу localhost и принимает только локальные соединение
> Это называется "назло маме отморожу уши".Не совсем. Доморощенные горе-localhost-админы, устанавливающие mongodb с настройками по-умолчанию на всякие одиночные VDS, привели к повальным утечкам данных, учитывая рост популярности продукта у разработчиков. Ребята из MongoDB Inc, видимо, осознали степень ответственности за такое решение и исправили. Странно, что сразу так не сделали.
Монга из официальной монговской юм-репы по дефолту биндится на локалхост (в 3.2 и 3.4)Развели вой мимокрокодилы, которые монгу и не пробовали. Или ставили в кривом дистре с мэйнтейнером-лопухом
Авторизации по дефолту нет. Но на локалхосте сервера приложений это гуд
From release notes:>Previously only the binaries from the official MongoDB RPM (Red Hat, CentOS, Fedora Linux, and derivatives) and DEB (Debian, Ubuntu, and derivatives) packages bind to localhost by default.
Могучие сисопы опеннета юзают НЕ Red Hat, CentOS, Fedora Linux, Debian, Ubuntu, and derivatives.
У них вообще серверов, похоже, нет.
Да не - не в этом дело!
Дело в том, что пЫонеры типо тебя увидев более свежую версию на сайте и не увидев еЯ в репах ... тупо дёргали версию с сайта. Даже не почитав чего с ней родные майнтейнеры творят перед публикацией :-) Ну и выставили голое дузло на общественный доступ\пользование :-)