После года разработки представлен выпуск документо-ориентированной СУБД MongoDB 6.0, которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется под лицензией SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=57542
Монга лучше редиса? Какая из них менее токсична?
>Монга лучше редиса?монга лучше постгреса ) она вообще топчик для прогеров с ООП головного мозга (нас сейчас около 83.5%)
как так то? Постгресовский jsonb отлично подвинул монгу. Из ООП баз есть какая-то экзотическая Caché, не смотрел но осуждаю
в постресовском jsonb можно делать индексы по вложенным атрибутам?
можно
>Постгресовский jsonb отлично подвинул монгукостыль убогий поверх убогой субд. монга с 3.4 конфетка, хают её какие-то идиёты застрявшие с 2.6-- или вообще не щупавшие.
Застрявшие на 2.6 хают небезосновательно из-за знаменитой проблемы с cache eviction в тройке. Ожидать от монги можно что угодно, это-ж обычный стартап с незатейливой философией х-к, х-к - и в продакшен.
>знаменитой проблемы с cache eviction в тройкетакой знаменитой, что аж ничего не гуглится. я поппеннет читаю 20+ лет, в убогом слоне раз в 2 месяца то уязвимость, то коррапшон чего-либо, каждый раз радуюсь что у меня их ноль. иди уже вакуум теребонькай )
Ну так у тебя оно как "неуловимый Джо", на уй никому не нужен, что бы еще искать ошибки в этом поделии.
о, кто-то ещё пользуется гуглом
удачи
Вся инфа была и есть в ихней джире, и во времена релиза тройки попсовые поисковики её не игнорировали.
> Вся инфа была и есть в ихней джире, и во времена релиза
> тройки попсовые поисковики её не игнорировали.это делается одной галочкой.
> о, кто-то ещё пользуется гугломА чем надо? Скрепопоисковик Спутник-и-погр...ой, простите, просто Спутник, кажется - всьо?
И Просвирин, кстати, тоже сдох. Как жыть?
саврименый чилавек всё ищит в тектоке.
>прогеров с ООП головного мозга (нас сейчас около 83.5%)А почему именно нас 83.5% ? Если учесть и прогеров оффтопОСей, то больше.
redis -- это прродвинутый memcacheнельзя сравнивать редис и монго
А если очень хочется? Понятно, что рассматриваю классическую модель использования, при которой данные не удаляются вообще никогда. Но они могут обновляться.
> А если очень хочется? Понятно, что рассматриваю классическую модель использования, при
> которой данные не удаляются вообще никогда. Но они могут обновляться.можно найти срез функционала который можно сравнивать, но они же совсем в разных весовых категориях.
Классическая модель использования redis - когда данные не только удаляются, а еще и автоматически удаляются.Все остальное - как правило означает что разработчиками ниасилено ничего кроме редиса (включая гуглопоиск) и из него пытаются сделать гибрид монги-rdbms-и еще если можно-rabbit. Оно первое время у таких даже работает, особенно в тестовой среде.
Потом конечно падает под собственным весом и нанимают нормальных.
Ну, мне нравится, что оно вроде экономное, и при этом эффективное. Тот же слон раздувается как не в себя.
Redis это в первую очередь key-value хранилище с плюшками. Если пытаться навернуть что-то сложнее, то монга будет выгоднее.
редис работает пока есть оперативка, а потом перестаёт.и не гарантирует сохранность данных.
редис -- это временное хранилище с TTL, но хорошее.
Понятно, спасибо. Я думал, хотя бы сохранность сброшенных на диск данных там обеспечивается.
> Понятно, спасибо. Я думал, хотя бы сохранность сброшенных на диск данных там
> обеспечивается.до какой-то степени да, но прямо доверять ему не стоит. можно пытаться доверять, но зачем? он не для этого сделан.
> редис работает пока есть оперативка, а потом перестаёт.Немного раньше ;-) Из-за fork/save архитектуры.
> и не гарантирует сохранность данных.э... Вообще-то гарантирует. На определенных условиях. Чем и отличается в лучшую сторону от мемкэшей.
> редис -- это временное хранилище с TTL, но хорошее.
Ну я бы сказал так - современный редис вырос в монстра который все уже разок мной перечисленное - и таза банных, и персистентное хранилище с некоторыми оговорками, и система подписок, и чорт в ступе, можно его в таком виде использовать, но - ненужно. Потому что вот _хорошее_ в нем - именно таки да, временное хранилище с ttl. Все остальное специализированные средства делают существенно лучше и надежнее.
>Немного раньше ;-)кек, а что вы хотите от инмемори дб? хранить в ней бигдату?
>>Немного раньше ;-)
> кек, а что вы хотите от инмемори дб? хранить в ней бигдату?ну fork/save это вот как раз не совсем инмемори и дает интересные спецэффекты, когда память таки приходится считать.
"при мемкэшистах такого не было!"
>вот как раз не совсем инмемориредиска разве читает данные с диска когда в памяти этих данных нету? fork/save всего лишь слепок текушего инмемори состояния, вопрос для чего? для персистентного хранения?
Изначально делалось для отката в случае крэша. Да, при старте - читает.Сейчас - в принципе можно использовать и для персистентного хранения, но не нужно.
> Изначально делалось для отката в случае крэша.не для отката, а чтобы избавиться от прогрева. В случае с хранением сессий может только, чтобы не отваливалось все.
> Да, при старте - читает.
ну вот, но не читает ведь при работе (запросах), значить инмемори. И размер слепка бд на диске не может превышать установленный рабочий объем памяти (max_memory). Что опять таки подтверждает то, что вся база будет хранитмся в инмемори.
> Сейчас - в принципе можно использовать и для персистентного хранения, но не
> нужно.Ну можно в принципе юзать это, если базу заранее подготовить (статическую, только чтение данных) и размер ее не превышает размеров оперативной памяти. А так ее назначение инмемори временных данных (сессий, всякого рода кеш прослоек и т.д.).
Ну так тебе rdbms с плюшками и acid, или key-value с автоэкспайром? Естественно, раздувается, надо ж ему кэши и оптимизатор запросов где-то держать.У нас в системе, к примеру, используется и то и другое (и третье, и иногда даже и четвертое) - просто по назначению. Всякая преходящая сессионная ботва - прекрасно лежит себе в редисе. А терабайты шибкосложно структурированных данных - в нормальной базе.
Да, сссабака женского полу. Есть у нас деятели, которые его в проект в качестве ещё и message brocker'а затащили. И оно даже работало, пока на продуктиве телеметрию цеплять не начали.
В сентябре будут apache pulsar (whyyyyyy?!) делать.
А что там про Tarantool и PostgreSQL Citus?Разве они не могут заменить Монговноу?
berkeleydb
Чистый ISAM в максимальной его реализации, поверх которой вы моежете навертеть все, что вам угодно в какой угодно конфигурации.
ты просто больше ничего не узучил за свои бездарно пролитые 40 лет
закусывать надо, дарно. Постгреса достаточно, тем более в наши дни.
А почему про индексы опустили?
Что теперь можно создавать несколько партиал индексов по одному набору колонок. Это очень важное улучшение.
> которая занимает нишу между быстрыми и масштабируемыми
> и функциональными и удобными в формировании запросовЗаучит так будто она медленная и не масштабируемая зато неудобная и нефункциональная в формировании запросов
>> которая занимает нишу между быстрыми и масштабируемыми
>> и функциональными и удобными в формировании запросов
> Заучит так будто она медленная и не масштабируемая зато неудобная и нефункциональная
> в формировании запросовну в целом ты не очень ошибся ;-)
Особенно во второй части.
Есть быстрые и масштабируемые системы, но эту нишу Mongo не занимает.
Я лично видел кластер из 9 монгов, так что масштабируется как минимум неплохо если не сказать хорошо.
> из 9Ну всё, серьёзный прод, пацаны.
А какой должен быть серьезный?
Серьёзный прод должен быть серьёзным, это же серьёзный прод!
порядка 10009 - это чуть лучше чем у релационных баз
видел к примеру тест на Cassandra: запустили на AWS 250 серверов и достигли скорости записи 1 млн транзакций в секунду.
Вот тест:
https://netflixtechblog.com/benchmarking-cassandra-scalabili...на картинке из теста показана линейная масшиабируемость:
https://miro.medium.com/max/1400/1*r2pJJZxKNktYmRN5mi5tOA.png
Если не обеспечивается ACID и обзор доступной пользователю схемы, то это не БД, а абсолютное говноподелие.
Если есть сеть, нет смысла в распределенных БД, поскольку всегда первичен ACID, а все остальное легко реализуется на одном локально расположенном территориально хосте. Все эти распределенные дела нужны только для того, чтобы понтоваться, высасывать бабки с клиентов и защищать диссертации.
да-да, расскажи это гуглу, иксперт локалхостов
> да-да, расскажи это гуглу, иксперт локалхостовТак гуглу твоих данных совершенно не жалко. А вот тебе наверное обидно будет потерять все, нажитое непосильным трудом и спрятанное на локалхосте?
Ты, похоже, никогда не видел нагрузок, когда локальный хост не в состоянии с ними справиться. Да? И, видимо, никогда не слышал про такое понятие, как отказоустойчивость.
>И, видимо, никогда не слышал про такое понятие, как отказоустойчивость.тут тока не надо путать с распределенностью. Распределенность не есть отказоустойчивость.
_особенно_ у монги, где распределенный и отказоустойчивый одновременно кластер - это п-ц неудобно и ненадежно.
> _особенно_ у монги, где распределенный и отказоустойчивый одновременно кластер - это п-ц
> неудобно и ненадежно.почему неудобно если кластерные операции автоматизированы, когда одна нода берет на себя мастер функции и т.д. (все это должно быть автоматом). Ненадежно, почему? распределенная система это клетка куда кладут яйца, а не распределенная - корзина (из поговорки). Распределенная система в случае сбоя должна частично быть не работоспособна, ибо сбой не должен затрагивать рабочие узлы, помимо этого необходимо минимальное резервирование для полной отказоустойчивости (всякие там репликейшен факторы). В серьезных распределенных системах отказоустойчивость надо проектировать на всех уровнях, от дисков, серверных нод, дц стоек, самих дц, и регионально.
> _особенно_ у монги, где распределенный и отказоустойчивый одновременно кластер - это п-ц
> почему неудобнохотел тебя послать читать доку, но вспомнил что поздно уже, неположено ее читать одичалым.
> когда одна нода берет на себя мастер функции и т.д.
Тогда эта система не будет распределенной. У монги это _разные_ вещи и при смешивании их в кучу все становится совсем интересно, но лучше - с галерки в бинокль.
А потом ты узнаешь как у нее интересно устроена защита от split-brain, когда мастером становиться никто не желает...
Многие даже отъявленные жабисты после этого шли на поклон к ребятам из postgrespro, обеими руками придерживая свежепоротые задницы.
> хотел тебя послать читать докудоку монги? я там вообще-то не за монгу говорил и ее удобства, а в целом за отказоустойчивые распределенные системы.
Система может быть не распределенной, но отказоустойчивой быть обязана.> Тогда эта система не будет распределенной.
ну тогда определимся с понятием распределенный. Сами данные если лежат каждый на своей ноде, то где-то должна лежать информация об этих данных (метаданные), которые для отказоустойчивости должны быть размещены на минимум 3-х нодах в виде кластера с выбором мастера. Это классическая архитектура распределенного хранения данных. Всякие люстры, гпфс и т. д. так работаю. И метаданные в этом случае не распределены, всегда будет эта точка отказа. Думаю вы знаете иной метод построения распределенных систем, плиз в студию.
> А потом ты узнаешь как у нее интересно устроена защита от split-brain,
> когда мастером становиться никто не желает...не хочу знать, за монгу не говорю, split-brain решается кворумом банальным.
> Сами данные если лежат каждый на своей ноде, то где-то должна лежать информация об этих данных (метаданные)внезапно, метаданные тоже могут быть distributed. А специальный сервер для них является узким местом в больших системах (не про монгу будь сказ...ой...shi...)
> Всякие люстры, гпфс и т. д. так работаю.
а вот например gluster - так не работает, нет у него сервера метаданных вообще. Платить за это приходится производительностью, поскольку там задачу "решили" в лоб (правильней сказать - не знали что задача вообще требует решения и забили "и так сойдет", но тем не менее)
А монга работает гораздо, гораздо чудесатее.
> split-brain решается кворумом банальным.
и вот херак - у тебя сдох ЦОД, а второй...ой...встал в readonly forever. И с пляжа на Таити ты резко перемещаешься на минуспервый этаж корпоративного дибилдинга, где уже ждет мастер-кнутователь.
Он тебе и объяснит, подробнейше, почему банальные решения в области обработки больших данных не всегда являются хорошей идеей.
Опять таки у распределенной и отказоустойчивой одновременно монги все резко становится еще чудесатее, одной поркой не отделаешься, на минус-втором этаже в фундаменте есть свободные бетонные ямы.
Ну а поскольку тебе лишние знания без надобности - про arbiter node и почему это очень забавно но вообще нельзя никогда и никому я тебе рассказывать не буду, пожалуй.
> внезапно, метаданные тоже могут быть distributed.интересно, вот про это и хотелось бы узнать по-подробнее
> А специальный сервер для них является
> узким местом в больших системах (не про монгу будь сказ...ой...shi...)поэтому эти точки и делают отказоустойчивые, 2+1 - минимум.
> а вот например gluster - так не работает, нет у него сервера
> метаданных вообще.ну и в чем плюсы и минусы?
> и вот херак - у тебя сдох ЦОД, а второй...ой...встал в readonly
> forever. И с пляжа на Таити ты резко перемещаешься на минуспервый
> этаж корпоративного дибилдинга, где уже ждет мастер-кнутователь.я же выше перечислял уровни отказоустойчивости, если в проекте не продусмотрена отказоустойчивость уровня дц, то да я с Гаити припрусь.
> Он тебе и объяснит, подробнейше, почему банальные решения в области обработки больших
> данных не всегда являются хорошей идеей.у вас есть другие решения? плиз в студию - интересно.
> Опять таки у распределенной и отказоустойчивой одновременно монги все резко становится
> еще чудесатее, одной поркой не отделаешься, на минус-втором этаже в фундаменте
> есть свободные бетонные ямы.не интересна мне монга в конкретном случае, мне интересен механизм распределенности и отказоустойчивости.
> Ну а поскольку тебе лишние знания без надобности - про arbiter node
> и почему это очень забавно но вообще нельзя никогда и никому
> я тебе рассказывать не буду, пожалуй.пфффффф, так бы сразу и сказали бы, можете не отвечать на выше указанные вопросы.
А что мешает распределенной системе обеспечивать консистентность?По CAP теореме такая система будет класса AC.
Проблема в том, что без P, твоя распределенная бд нахрен никому в проде не сдалась. Тот кто говорит, что у него AC в сторадже: тупое школоло.
Можно, пожалуйста, более развернуто объяснить?
да потому, что мы не можем считать, что сеть всегда и идеально доступна.по факту, если есть проблема коммуникации по сети, система получается должна выбирать быть ли ей:
- доступной, но не консистентной (ноды не могут общаться, а значит невозможно обеспечить их одинаковыми данными, но писать в часть нод мы можем)
- консистентной, но отключенной от нагрузки (просто не меняем данные, возможен режим readonly)а дальше все зависит от конкретной стратегии.
например, при сетевой недоступности части кластера, база может часть кластера отключать (минорную), а потом восстанавливать данные репликацией, как это делает монга. в результате, в зависимости от конфигурации, кластер может выдерживать различное количество отказов - как на уровне ноды, так и на уровне сети.
>да потому, что мы не можем считать, что сеть всегда и идеально доступна.зачем мы должны считать? кто будет проектировать отказоустойчивую (пусть даже распределенную) систему, не думая в первую очередь про отказоустойчивость сети? Зачем спроектированную отказоустойчивую систему размещать в дц (сложно назвать это место дц) где нет отказоустойчивого электрического питания или системы там охлаждения. Не говорю уже о мерах "защита от дурака" или "уборщиц, проснувшихся не стой ноги". Это все комплекс мер и требований отказоустойчивости.
все так, но сплит-брейн убил много стартапов уже...
в теории, теория не отличается от практики, а на практике - отличается )
> в теории, теория не отличается от практики, а на практике - отличается )потому-что х*як-х*як и в продакшен, без всяких DR планов, креш-кейсов и т.д.
>твоя распределенная бд нахрен никому в проде не сдалась.кек, про корзину с яйцами.
>>твоя распределенная бд нахрен никому в проде не сдалась.
> кек, про корзину с яйцами.Ну вот ты уже одно яйцо себе надеюсь отрезал и положил в arctic vault, на случай чего?
Или все же отсутствие у тебя второй головы и второй жопы как бы намекает...
> Или все же отсутствие у тебя второй головы и второй жопы как
> бы намекает...https://habr.com/ru/post/672124/
>Если не обеспечивается ACID... абсолютное говноподелие.Теоретик локалхоста ) по моим наблюдениям, уже даже банки многое переводят на не ACID-системы,а уж остальным оно и подавно не надо.
Теоретик опеннета. Ты думаешь, что в банках одни гении работают?
Уж всяко умнее opennet экспертов
А как обеспечить отказоустойчивость базы данных? Если единственный сервер сдохнет?
дублированием оного ?
Что такое "обзор доступной пользователю схемы"?
ну бложик на 10 подписчиков, никто и не предлагает делать по такому принципу.
а серьезные системы, с требованием к масштабируемости и отказоустойчивости - вполне живой вариант.Аноним, если ты не знаешь зачем что-то существует, это не значит, что нет тех кто знает, и использует (с)
попробуй это осознать, и когда (если) получится - разрешаю цитировать, но только с указанием моего авторства.
> а серьезные системы, с требованием к масштабируемости и отказоустойчивости - вполне живой
> вариант.seriously?
> Аноним, если ты не знаешь зачем что-то существует, это не значит, что
> нет тех кто знает, и использует (с)или наоборот - если ты думаешь, что на сирьиозных щах у тебя гарантированная масштабируемость и отказоустойчивость, а не "пока еще каким-то чудом не навернулось" - возможно ты чего-то не знаешь или не видел.
А с бложиком как раз все было бы хорошо - ну потеряется последнее ненужное выражение ЧСВ, или ответ отстанется без вопроса - бложик немногое потеряет. А вот если там твой последний свифт-перевод на разрешенные $20000...
я б ща рассказал про шардирование, микросервисы, eventual consistence, и проч... а еще про физическую невозможность процессить все транзакции в реалтайме изза задержек и проблем со связью, так же как и про страховые депозиты банков, на случай двойного списания средств, так же как и про то, что свифт обрабатывается далеко не в реальном времени, и требует кучи ручных операций, которые по определению смльно асинхронны к выполнению кода. но мсье пох видимо найдет, что мне ответить все равно...
Там вроде лицензия новая у монги запрещала на ее основе строить облачные решения?
оно и без лицензии не надо
не умеешь читать. запрещала продавать монгу. а юзать - не обляпайся.
> не умеешь читать. запрещала продавать монгу. а юзать - не обляпайся.Откуда вылез, болезный? Процетирую специально для тебя
> распространяется под лицензией SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса
>> не умеешь читать. запрещала продавать монгу. а юзать - не обляпайся.
> Откуда вылез, болезный? Процетирую специально для тебя
>> распространяется под лицензией SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервисану раз мы цитируем, то бери текст лицензии, а не википедию.
там программа - это то, что тебе компания, делающая монгу дала.
“The Program” refers to any copyrightable work licensed under this License.там речь идет о монге. если ты предлагаешь монгу, к использованию третьей сторойной, то тогда да - исходники монги, исходни укравляющего софта и так далее.
If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this Licenseесли ничего не понимаешь, не спорь с папой.
> ну раз мы цитируем, то бери текст лицензии, а не википедию.Это текст новости
> там речь идет о монге. если ты предлагаешь монгу, к использованию третьей сторойной, то тогда да - исходники монги, исходни укравляющего софта и так далее.If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License
> если ничего не понимаешь, не спорь с папой.
Папаша был маньяк и изверг. И вот однажды он не прочитал внимательно комментарии и взбесился больше обычного. Аноним процитировал текст новости, чтобы себя защитить, но папочке это не понравилось. И вот на моих глазах он цитирует лицензию и приходит к выводу, который ему говорил аноним, а потом поворачивается ко мне и говорит: "Что ты такой серьезный, сынок?".
Что ты такой серьезный?
Репы монги недоступны из РФ
А если ставить из репозитория дистрибутива? Кто-то что ли качает напрямую с сайта?
Серый импорт?
Из реп основных дистрибутивов монгу давно выкинули.
> Из реп основных дистрибутивов монгу давно выкинули.Вот, все правильно. Нехрен обходить нужные и полезные вашей экономики санкции за счет дистрибутивов.
Ранее модненький NoSQL уже лет 7 назад как полностью продул бородатым реляционкам
> Ранее модненький NoSQL уже лет 7 назад как полностью продул бородатым реляционкамИ статическая типизаця снова стала модной в язычках. Случайность? Не думаю.
это как говорить, что шариковые ручки проиграли карандашам.
и то и другое используется для схожих целей, но в разных условиях )
Я даже не знаю что хуже Mongo или Rust...
Язык программирования Carbon?
Это та штука, которая делает C++ удобнее (И БЕЗОПАСНЕЕ)
А ещё оно освободит программистам в перспективе миллиарды лет, ведь вместо void, можно будет писать fn !!!!!!
На два символа короче.
Чем вам не нравится mongodb?
А rust?
А я знаю что лучше! Акваланг!Монго нехорош лишь когда незаметно начинает тупить. И когда идёт долгий рестарт с рековырянием индексов.
Она уже перестала терять данные?