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

Производительность MongoDB - наличие нескольких баз данных

Наше приложение нуждается в 5 коллекциях в дБ. Когда мы добавляем клиентов в наше приложение, мы хотели бы поддерживать отдельный db для каждого клиента. Например, если у нас есть 500 клиентов, у нас будет 500 дБ и 2500 коллекций (каждый db имеет 5 коллекций). Таким образом, мы можем разделить данные каждого клиента. Меня беспокоит, приведет ли это к любым проблемам с производительностью?

ОБНОВЛЕНИЕ: Также следуйте этому обсуждению google-group.

4b9b3361

Ответ 1

Наше приложение нуждается в 5 коллекциях в дБ. Когда мы добавляем клиентов в наше приложение мы хотели бы поддерживать отдельный db для каждого клиент. Например, если у нас есть 500 клиентов, у нас будет 500 дБ и 2500 коллекций (каждый db имеет 5 коллекций). Таким образом, мы можем разделять данные каждого клиента.

Это отличная идея. Помимо логического разделения, это обеспечит вас, вы также сможете использовать защиту уровня базы данных в MongoDB, чтобы предотвратить непреднамеренный доступ к данным других клиентов.

Моя забота о том, приведет ли она к любым проблемам с производительностью?

Нет, и на самом деле это поможет, так как блокировка уровня базы данных чрезвычайно тяжелая блокировка для одного клиента (если это возможно в вашем сценарии) не повлияет на производительность для другого клиента (возможно, если они конкурируют за один и тот же I/O, но если вы используете опцию --directoryperdb, то у вас есть возможность разместить эти БД на отдельных физических устройствах.

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

В отличие от претензии в другом ответе, поток TTLMonitor НЕ тянет документы в ОЗУ, если они не удаляются (и добавляются в свободный список). Они работают с индексами TTL как для того, чтобы указать, должны ли истек какие-либо документы, так и непосредственно разместить документ.

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