Как мне перенаправить чтение в MongoDB на конкретный вторичный узел при прохождении через mongos? - PullRequest
0 голосов
/ 14 октября 2011

Это закрытая установка MongoDB (2.0.0) с несколькими наборами реплик по 3 узла в каждом. Mongoid проходит через монго. Я хочу выделить один из вторичных узлов (каждого набора реплик) для длительных запросов, которые в противном случае влияли бы на работу пользователя; Я не хочу, чтобы нормальные запросы шли туда. Я вижу, что могу пометить узлы (осведомленность о центре обработки данных), но как я могу отправлять чтения специально помеченным узлам?

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

1 Ответ

0 голосов
/ 14 октября 2011

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

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

Надеюсь, это поможет.

...