2013-08-05 3 views
0

Я недавно начал работать в компании с большим экземпляром mongoDB. Выбранный ключ документа имеет некоторые проблемы, в частности, возможно, что один документ будет продолжать расти в размерах навсегда. После миллионов изменений один документ может быть размером до 130 Мбайт +.MongoDB как перенести кусок, если кусок содержит только один документ и больше, чем максимальный размер блока

Мы используем MongoDB 2.2.1. То, что я пытаюсь сделать, - это исправить балансировку, потому что балансир находится в цикле, пытаясь перенести некоторые большие куски. Он терпит неудачу, потому что размер блока больше, чем размер разрешенного размера по умолчанию (64 МБ). Часть также не может быть разделена, поскольку содержит один документ.

Настоящим решением является изменение ключа документа (создание нового экземпляра базы данных и переход на него), но для этого потребуется довольно много времени, и я хочу установить краткосрочное исправление, чтобы помочь балансировать. Единственное, что я могу придумать, - увеличить размер куска по умолчанию от 64 МБ до чего-то вроде 160 МБ, чтобы некоторые из наших огромных кусков могли мигрировать.

Мой вопрос, что лучше:

  1. Увеличить размер макс кусок до 160MB, вручную переместить кусок, а затем уменьшить максимальный размер куска. (Идентификаторы больших документов вернутся к тому, чтобы быть немигрируемыми в этот момент).
  2. Постоянно увеличивайте максимальный размер блока до 160 МБ и оставьте его там, пока мы не сможем перейти на новый ключ. (Я понимаю, что увеличение размера куска может иметь очень сильное воздействие IO)
  3. Что-то еще?

ответ

1

Один документ никогда не может быть больше 16 МБ, но набор документов, имеющих один и тот же ключ осколка, может, конечно, быть более 16 МБ.

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

+0

Я полностью счастлив оставить его там, где он находится ... mongos balancing хочет его переместить. :) Есть ли способ рассказать балансирующему, чтобы пропустить определенные ключи осколков? – dtorgo

+0

Нет, я не думаю, что есть, но меня удивляет, что вместо этого они просто не двигают другими кусками. – Derick

Смежные вопросы