Если MongoDB имеет ахиллесову пяту, то это факт, что он поддерживает только однопоточные записи и однопоточные преобразования карт.
Как всегда, здесь есть компромиссы. Однопоточные записи - это самый простой способ избежать проблем блокировки и минимизировать накладные расходы. Таким же образом многопоточные карты-сокращения - отличный способ заблокировать ваши данные. Таким образом, однопоточные сокращения карт в производственной системе, вероятно, проще и безопаснее.
Тем не менее, вы не без инструментов здесь. MongoDB предоставит один поток записи для каждого экземпляра. Так что если вы осколка MongoDB, то вы получите один поток записи для каждого осколка.
Если вам нужно несколько индексов на 2 миллиарда строк, вам все равно стоит взглянуть на шардинг. Немного быстрой математики: MongoID составляет 12 байтов. Индекс по MongoID будет 2B * 12 байт = 22GB +. Если вы хотите добавить еще два индекса (даже всего два 4-байтовых целых числа), мы говорим о 7,5 ГБ для каждого.
Итак, в строках 2B вы говорите о том, что в индексах более 37 ГБ ( минимум ). На большинстве 8-ядерных серверов это означает, что вы даже не сможете хранить свои индексы в памяти, не говоря уже о каких-либо данных.
Так что, если вы хотите серьезного исполнения здесь, вы должны начать смотреть на шардинг. Просто на основании общих чисел. FWIW, MySQL больше не был бы опытным в обработке документов 2B. При таком количестве данных вам действительно нужно, чтобы несколько серверов справлялись с нагрузкой.