Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
По производительности в NoSQL части они были примерно одинаковы
А при том, что тестирование (и расхваливание), насколько PostgreSQL эффективнее по сравнению с MongoDB при каких-нибудь
простеньких key-value запросах (подозреваю, в тех бенчмарках даже агрегатные запросы не сравнивали) при работе на одном узле, настолько же глупо, бессмысленно и оторвано от практики, как и тестирование, насколько MySQL эффективнее по сравнению с PostgreSQL (или наоборот) при выполнении запроса «SELECT 1».
Но ждать качественного мультихостового нагрузочного бенчмарка от фанов PostgreSQL было бы бессмысленно,
То есть, PostgreSQL функционально отстаёт от MongoDB как минимум на 4 года.
Для таких мелких случаев, возможно, не стоит и с MongoDB возиться?
Что вы так к этому ACID прицепились? ACID — не самоцель, а просто всего лишь одна из возможных концепций баз данных.
Понятно, что из-за простоты освоения и использования («всё само работает, всё само обеспечивает консистентность») она приятнее для новичков
Для таких мелких случаев, возможно, не стоит и с MongoDB возиться?
А как же NoSQL is WebScale?
Т.е. если банк случайно пролюбит пару транзакций одна из который ваша зарплата, а вторая выплата по кредиту, то ничего страшного? :)
Ну давайте расскажите как вы обеспечиваете ACID сами без базы данных.
Мне это показалось, или вы приравниваете WebScale к «мелким случаям, для которых одного узла достаточно»?
А теперь внимание, сюрприз: банковская система (да-да, те самые «финансы», которые так любят упоминать любители ACID, AC of CAP «и прочих страшных слов» — за их важность, серьёзность, ынтырпрайзность и консистентность)… не удовлетворяет ACID и обеспечивает именно что eventual consistency :D
А я и не обеспечиваю. Если ACID даже мировой банковской системе не нужно, зачем оно сизому и убогому мне? Пусть ACID-ом студенты балуются, чтобы у них в голове хотя бы такой примитив, как реляционные базы данных, хоть как-то уложился. Благо что про использование ACID для приведения головы в порядок ещё Тимоти Лири писал.
И первыми начали рассказывать про MongoDB на большом числе узлов.
Угу приводить в пример что у банка есть банкомат и по этому система не ACID это мягко говоря не корректно. Это вообще говоря к ACID никаким боком.
Особенно учитывая, что фактически MongoDB это еще больший примитив.
Простите, вы серьёзно не в курсе, что MongoDB с начала и до конца — от типа данных для primary key и синтаксиса агрегатных запросов, и до механизма replica set tags — предназначен именно для эффективной масштабируемости?
Или вам просто очень хочется вытянуть его в удобную и привычную для SQL-школоты нишу простеньких однохостовых бенчмарков?
то знайте, точно так же смешно для пользователей MongoDB выглядят и «бенчмарки PostgreSQL по сравнению с MongoDB на операциях с JSON».
Помимо offline-банкоматов вспомните про offline-терминалы в магазинах — а в мире они очень даже сильно распространены!
В постгре вон hot standby-ю пять лет скоро исполняется. Пять лет как read-only нагрузку можно сбрасывать на другие хосты. Ну, почти что масштабируемость, чо.
Так это, не подскажете, как в PostgreSQL сделать автоматический перевыбор мастера при пропадании текущего мастера?
А запретить ей при этом при перевыборе выбирать мастером вот этот вот хост — у него процессор слабее, чем у остальных?
Или как настроить репликацию, чтобы запись считалась успешно выполненной только тогда, когда она реплицируется как минимум на один — любой — хост из твоего датацентра и один — любой — хост из другого датацентра?
Только вот если решение не может обеспечить на одном узле сравнимый уровень производительности, то приводить довод «оно же масштабируемое!» как минимум странно.
А что MongoDB дает приемлемые результаты только если кластер? Стоимость владения нет не слышал?
MongoDB is WebScale!
Дополнительно, я хотел бы заметить такие транзакции никакого отношения к ACID не имеют. По одной простой причине, для нее такие транзакции не существуют. И станут они существовать когда их добавят.
Расскажите как обеспечить ACID в MongoDB. Тогда и поговорим. Любой человек который начинает рассказывать что ACID ему не нужен, обязательно словит проблему с целостностью данных.
Нет же. Нисколько не странно.
Параллелизуемые алгоритмы имеют полное право иметь оверхед по сравнению с непараллелизуемыми.
Видите ли, «приемлемые результаты» для разных людей могут быть разными.
Вы так забавно повторяете эту мантру, как будто то ли MongoDB не применим ни для чего, кроме веба (хотя в success stories описывают не только его использование в Ebay, Yandex и Foursquare, но и для трейдерских данных, и для поддержки игроков в EA Sports, и для сбора данных с сенсоров), то ли будто эта мантра помогает вам опровергнуть мои слова.
MongoDB is scalable. PostgreSQL and MySQL are not. Вот как надо.
Думайте о банке в целом в целом. И о банковской финансовой транзакции в целом, а не о «транзакции записи в банковскую базу».
Вы же не думаете, что всё это время клиент-банк в Hertz держал открытым sql-соединение, чтобы по итогу закоммитить?
Поэтому, когда Hertz списал 750 евро, вы «ушли в минус». Ааа, constraint violation, ужас-ужас!
Так вам «обеспечивать ACID» надо, или «обеспечивать консистентность»? Первое — это же всего лишь один из частных случаев, одна из возможных (и далеко не всегда удобных и эффективных) реализаций второго.
Да просто же. У банка для этого есть Служба Безопасности и Коллекторы.
Сначала разберитесь с тем что такое ACID. Судя по тому что вы пишите про банк вы слабо понимаете что это такое и не писали ни одной финансовой системы.
Да перестаньте вы уже думать о «финансовой системе» как о «базе данных банка». Забудьте про базу. Про физический движок, на котором она крутится. Перестаньте мыслить как SQL code monkey, который гордо объявляет, что он «пишет финансовую систему», хотя он пишет всего лишь бэкенд и базу данных для неё.
Поднимитесь на уровень абстракции выше. На тот уровень, на котором финансовая система пишется не на SQL, а на бумаге, и вступает в силу не после коммита и деплоя, а после подписания её генеральным директором.
Вот там ACID-а — нет, там прямо чистый BASE. А что у какой-то мелкой подсистемы внутри банка есть ACID — да кто ж этих компьютерщиков разберёт.
Вы понимаете, что MongoDB просто не обеспечивает транзакции?
Вышла Mongodb 3.0 Production Release