Имеет ли смысл иметь больше осколков, чем физических серверов, для распространения записей Монго? - PullRequest
2 голосов
/ 11 января 2012

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

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

До сих пор я рассматривал шардинг только как вариант горизонтального масштабирования: добавьте больше машин для размещения шардов.

Имеет ли смысл иметь несколько осколков на одной и той же машине только для разметки записей?

Machine A:   [Shard A Master] [Shard B Replica]
Machine B:   [Shard B Master] [Shard C Replica]
Machine C:   [Shard C Master] [Shard A Replica]

1 Ответ

2 голосов
/ 12 января 2012

В большинстве случаев выполнение нескольких процессов mongod на физическом компьютере (в виде набора реплик или серверов сегментов для разных сегментов) не увеличивает производительность записи по сравнению с запуском одного mongod на машину. MongoDB будет очень хорошо работать в сценариях одновременной записи, если «рабочий набор» данных (то есть часто используемых данных) и индексов умещается в ОЗУ - если у вас только один mongod на машину, то mongod имеет доступ ко всей оперативной памяти; если у вас есть больше, они в конечном итоге будут бороться друг с другом за ограниченный ресурс.

В особых случаях, например, если у вас много избыточной емкости на ваших физических машинах, может быть полезно запустить несколько mongod с, поскольку они могут лучше использовать ресурсы, доступные на машине.

...