Использование второй базы данных для записи тяжелых данных в MongoDB - PullRequest
0 голосов
/ 13 августа 2011

Как следует из названия, является ли использование второй базы данных для записи тяжелых данных хорошим вариантом в Монго? Например, для голосований (голосование по таким объектам, как вопросы переполнения стека) и информации о просмотрах страниц, имеет ли смысл хранить вторую базу данных с документами, которые ссылаются на объекты в первой базе данных?

Или более разумно было бы просто поместить все в одну базу данных?

Я знаю, что для записей, которые не нужно немедленно показывать пользователю (например, при записи и обновлении счетчика просмотров страниц), многие приложения записывают данные в промежуточный слой, такой как memcache, а затем массово обновляют базу данных с интервалом. Я бы пока не хотел создавать такую ​​систему.

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Если со «второй базой данных» вы имеете в виду второй процесс mongod для уменьшения конкуренции за блокировку записи, то да, ваше решение поможет.Обратите внимание, что сегментирование в основном предлагает дополнительную пропускную способность записи (и чтения), но гораздо более гибко и не зависит от приложения.

Если вы имеете в виду создание второй базы данных в вашем единственном процессе mongod, то это не поможет вообще.Блокировки записи Mongo охватывают весь процесс mongod.

ОБНОВЛЕНИЕ: Начиная с MongoDB 2.2 блокировка записи происходит в базе данных, а не на уровне процесса, и это может привести к уменьшению конфликта блокировки записи при использовании нескольких логических баз данных.

0 голосов
/ 08 апреля 2012

Mongod в 2.0 имеет так называемую блокировку с выходом, что означает, что он смотрит, находится ли то, что вы обновляете, в памяти, и нет ошибки страницы, обновится немедленно, если не приведет к блокировке. По замыслу у одного монгода есть глобальная блокировка, единственный способ обойти это - осколок, поэтому у вас будет несколько монгод, однако это вводит новый уровень сложности. Если вам удастся сохранить все активные данные в памяти, у вас все будет хорошо, но это полностью зависит от потребностей вашего приложения и набора данных. Имейте в виду, что это не серебряная пуля для написания тяжелых монго.

Я предлагаю вам протестировать приложение до того, как вы приступите к работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...