Ограничить запросы к коллекции MongoDB только неактивными чанками - PullRequest
1 голос
/ 13 мая 2011

Я создаю приложение, которое будет выполнять 2 этапа.

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

Я пытаюсь выяснить, возможно ли сделать их параллельно и сохранить блокировку записи до минимума для фазы выполнения.Я подумал, что один из способов сделать это - ограничить мою фазу валидации только запросом из более старых записей, которые не находятся в чанке, в который в данный момент вставляется фаза выполнения.Есть ли в MongoDB что-то, что ограничивает find() только запросом от чанков, к которым не обращались в течение некоторого настраиваемого промежутка времени?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Возможно, вы хотите настроить набор реплик. Вставьте в мастер и получить из вторичных. Таким образом, ваша вставка не будет заблокирована вообще.

1 голос
/ 22 июня 2011

Вы можете использовать упомянутый набор реплик с slaveOk и обновить его в мастере.

Вы можете использовать поле временной метки или ObjectId (который уже содержит метку времени) для фильтрации.

...