Кластер MongoDB и 100 000 ограниченных коллекций

#mongodb #cluster-computing

#mongodb #кластерные вычисления

Вопрос:

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

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

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

Комментарии:

1. Похоже, что MongoDB поддерживает огромное количество коллекций со снижением производительности, и они не распределяются автоматически по кластеру. mongodb.org/display/DOCS/Using a Large Number of Collections

2. Функция автоматического распределения коллекций по кластеру находится в конвейере в списке разработчиков. jira.mongodb.org/browse/SERVER-939

Ответ №1:

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

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

Один совет: используйте поле ‘postID’ в вашем сегментном ключе, это, вероятно, даст наибольшую производительность.

Ответ №2:

По-видимому, это еще не реализовано для mongodb: проблема

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

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

Комментарии:

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