MongoDB Cluster и 100 000 ограниченных коллекций - PullRequest
1 голос
/ 01 ноября 2011

Как кластер MongoDB распределяет ограниченные коллекции по узлам для балансировки нагрузки? Я планирую использовать ограниченную коллекцию для комментариев каждого поста в CMS на основе MongoDB. Предположим, что у нас есть 100 000 сообщений и, следовательно, 100 000 ограниченных коллекций, в которых хранятся комментарии для каждого сообщения. Будут ли эти ограниченные коллекции равномерно распределены по кластеру для масштабируемости для чтения и записи?

Я не хочу огрызать ограниченную коллекцию. Я хочу равномерно распределить все ограниченные коллекции по кластеру для масштабируемости для чтения и записи.

Допустим, у нас есть 5 машин. Когда мы создаем новые коллекции, мне нужно, чтобы они создавались на разных машинах / узлах, а также перераспределяли их при добавлении новых машин.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

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

2) Поверьте, вам следует использовать одну большую коллекцию для всех ваших постов и тщательно ее осколить.Это обеспечит действительно эффективный и автоматический баланс ваших данных в кластере.Более того, коллекции с ограниченным количеством файлов не очень экономят место, потому что они заранее выделяют все пространство для всех ваших коллекций (это означает, что у вас будет много потерянного пространства впустую).лучше попробуйте sharding.

Один совет: используйте поле 'postId' в вашем ключе shard, оно, вероятно, будет наиболее эффективным.

1 голос
/ 01 ноября 2011

Видимо, он еще не реализован для mongodb: Проблема

Цитата из аналогичный вопрос :

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

...