У нас есть 2 сервера осколков mongo db (3 набора реплик на каждом).
Мы создали Sharded-коллекцию и вставили 200к документов. Балансировщик был отключен в этом окне, и мы включили его после первого теста и снова начали вставку.
В то время как в первом тесте все данные были вставлены в один осколок, и мы получили много предупреждений в mongolog: -
splitChunk не может найти фрагмент [{articleId: MinKey, sessionId: MinKey}, {articleId: «59830791», sessionId: «fb0ccc50-3d6a-4fc9-aa66-e0ccf87306ea»}) для разделения, границы фрагментов могут быть устаревшими
Причина, указанная в журнале, - это возможный ключ шарда с низкой мощностью
После второго и третьего теста, когда был включен балансировщик, данные были сбалансированы на обоих шардах.
Мы провели еще один тест и снова остановили балансировщик в этом тесте, данные собирались в обоих шардах, даже балансировщик был отключен (pageIds были идентификаторами читателей, которые повторяются из старых тестов вместе с некоторыми новыми идентификаторами для обоих)
Не могли бы вы рассказать, как работает этот механизм, так как данные должны поступать в оба шарда независимо от того, включен или выключен балансировщик при хорошей мощности ключа.
Ключ осколка: - (pageid) и (уникальный readerid)
Ниже приводится статистика вставки: -
Страница прочитана длительностью 200k
Уникальные идентификаторы страниц 2000
Продолжительность чтения страниц Unqiue сессии: - 70000
Заранее спасибо!
Когда вы включаете сегментирование для базы данных, для каждой базы данных назначается первичный сегмент. Если вы вставляете данные с отключенным балансировщиком, все данные перейдут в основной сегмент. Mongo Split вычислит точку разделения по мере роста ваших данных и создания фрагментов.
We did one more test and stopped balancer again in this test, data was going in both shards even balancer was off (pageIds were reader ids which are repeated from old tests along with some new ids for both)
Данные уже распределены по кускам, и эти куски хорошо распределены между 2 осколками. Если диапазон вашего ключа осколка также равномерно распределен между фрагментами, тогда любой новый документ будет помещен в соответствующий фрагмент, что приведет к равномерному распределению данных.