В настоящее время у меня работает один сервер MongoDB (в производстве). Самая большая коллекция в нем называется User. Эта коллекция имеет многоключевой (массив) индекс. Доминирующий запрос к коллекции User — это запрос $or к значениям в индексированном поле с несколькими ключами. Другое поле в этой коллекции представляет собой массив PageViews.
Поскольку сервер становится все более загруженным, я хотел бы разделить его, чтобы обеспечить производительность, которую я получаю в настоящее время. Проблема, конечно, в выборе шардового ключа. Читая это, кажется, что я облажался для изоляции запросов из-за моего многоключевого индекса и отсутствия других полей, которые можно было бы включить в доминирующий запрос.
В различных статьях отмечается, что создание ключа осколка для случайного значения не является хорошей идеей. Это связано с тем, что вы теряете изоляцию запросов. Но, учитывая, что я все равно не могу добиться хорошей изоляции запросов, должен ли я просто сегментировать случайное значение?
Кто-нибудь еще был в такой ситуации? Подумайте о каких-нибудь хороших вариантах?