Подтвердить что ты не робот

Mongodb - проблемы надежности еще важны?

У меня есть пара sqlite dbs (я бы сказал, около 15 ГБ), всего около 1 м строк - так что не супер большой. Я смотрел на mongodb, и с ним довольно легко работать, особенно если я хочу попробовать и выполнить основную обработку естественного языка в документах, составляющих базы данных.

Я никогда не работал с Mongo в прошлом, вам не пришлось бы учиться с нуля (будет работать на python). После небольшого поворота я наткнулся на несколько ужасных историй о монгодб-ре. надежность. Это еще одна серьезная проблема? В хрусте я, конечно, сохраню резервные копии sqlite, но мне бы не пришлось постоянно восстанавливать базы данных mongo.

Просто интересно, какие проблемы с коррупцией данных, с которыми люди столкнулись недавно с Монго? Это большая проблема?

Спасибо!

4b9b3361

Ответ 1

Да, долговечность - большая проблема в монго. Вы должны использовать множество репликации в mongodb для долговечности (вам нужно как минимум 2 машины), в противном случае вы можете потерять до 1 минуты при сбое питания, например. В монго нет единой прочности сервера, но, как я знаю, она будет разработана для 1.7-1.8. После сбоя вы должны отремонтировать db вручную, а работа с rapair может занять несколько часов, если ваши данные большие. Нет транзакции или кислоты, поэтому она не подходит для электронной коммерции или банковского приложения.

Вы не должны использовать версии для разработки mongo (нечетные версии версии, например, версии 1.3.x, 1.5.x, 1.7.x, являются версиями разработки), и вы предпочитаете использовать 64-разрядные операционные системы. Если вы вникнете в статьи о бедствиях в Интернете о монго, источником проблемы являются эти два в большинстве случаев.

CouchDB, Cassandra и postgresql имеют прочную долговечность (fsync по умолчанию - 10 миллисекунд в cassandra и postgresql), поэтому у всех их есть одна долговечность сервера.

Если вам нужна мертвая легко масштабируемость, отказоустойчивость и балансировка нагрузки; cassandra - лучший, но с плохими параметрами запросов. Неудачные узлы могут исчезнуть и вернуться через какое-то время, без проблем, самообслуживание системы.

EDIT: mongo 1.8 пришел с журналом (позволяет долговечность), но это не значение по умолчанию. Также посмотрите на это http://news.ycombinator.com/item?id=2684423

Привет,

Сердар Ирмак

Ответ 2

Как говорили другие, MongoDB не имеет прочности на один сервер прямо сейчас. К счастью, легко настроить множественную репликацию node. Вы даже можете настроить вторую машину в другом центре обработки данных и автоматически перенести данные на нее в прямом эфире!

Если запись должна быть успешной, вы можете заставить Mongo не возвращаться из вставки/обновления, пока эти данные не будут реплицированы в n ведомых. Это гарантирует, что у вас есть как минимум n копий данных. Наборы реплик позволяют добавлять и удалять узлы из вашего кластера "на лету" без какой-либо значимой работы; просто добавьте новый node, и он автоматически синхронизирует копию данных. Удалите node и перебалансировки кластера. Он очень разработан для использования на нескольких машинах, причем несколько узлов действуют параллельно; это предпочтительная настройка по умолчанию, по сравнению с чем-то вроде MySQL, которая ожидает, что одна гигантская машина сделает свою работу, и затем вы сможете сгруппировать ведомые устройства, когда вам нужно масштабировать. Это другой подход к хранению и масштабированию данных, но очень удобный, если вы нашли время, чтобы понять его разницу в предположениях и как построить архитектуру, которая использует свои сильные стороны.

Ответ 3

"MongoDB поддерживает автоматическую архитектуру осколков, позволяющую горизонтальное масштабирование на нескольких узлах". - source Поэтому вам нужно запустить несколько узлов для поддержки балансировки и восстановления после сбоев. Если вы хотите запустить один экземпляр, который не будет терпеть неудачу, если сила внезапно потеряна, вам потребуется что-то, что поддерживает ACID как couchDB. Говоря, что я использую mongo на работе в течение месяца, и он не врезался в меня, однако мы скоро перейдем к 6 node.

Прочность

Продукты используют разные подходы к долговечности. CouchDB - это "сбой", где db может прекратить свое действие в любое время и остаться последовательны. MongoDB принимает другое подход к долговечности. На машине авария, тогда будет ремонтDatabase() работа когда снова запускается (аналогично MyISAM). MongoDB рекомендует использовать репликацию - LAN или WAN - для истинной долговечности, поскольку данный сервер мог постоянно мертвы. Обобщить: CouchDB лучше выдерживает, когда используя один сервер без репликации.

Цитата из mongodb.org официальный сайт.

Ответ 4

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

Ответ 5

Я не вижу проблемы, если у вас есть те же данные и в резервных копиях sqlite. Вы всегда можете пополнить свои базы данных MongoDb. Заправка займет всего несколько минут.