Я немного запутался в парадигме сокращения карты и шардинга.
Я знаю, что будут вызываться функции mapper
и reduce
: первая со всеми документами, вторая когда я вызываю только emit ().
Я использую mongodb с нескольких дней, поэтому я не знаю всех аспектов этой базы данных, но, если я правильно понимаю систему шардинга, она в основном разбивает большую коллекцию на меньшие порции документов, верно?
Если это правильно .. что происходит с map-lower?
Например, в коллекции из 100 документов с 4 осколками:
- осколок 1: 1-25 документов
- осколок 2: 26-50 документов
- осколок 3: 51-75 документов
- осколок 4: 76-100 документов
Будет ли вызвана функция mapper
для первых 25 документов первого шарда, а затем обработана функция «уменьшить» ... и после этого она вызывает документы второго шарда и т. Д., Или не?
Если да, будет ли вызываться функция Reduce каждый раз, когда я вызываю emit () для каждого документа сегмента? поэтому в основном я спрашиваю:
Если у меня есть лог c, который должен работать со всеми документами моего запроса (предположим, кумулятивная сумма), я не могу разбить суммирование документы, когда больше нет документа осколка. Могу ли я обработать его как движение курсора слева направо? на весь набор данных?
Спасибо и простите за грубое объяснение. :)