Классика баз данных - статьи

       

Функции-комбинаторы


Одна из оптимизаций в реализации MapReduce компании Google [7] состоит в поддержке функций-комбинаторов. Функции-комбинаторы уменьшают объем данных, которые требуется передавать по сети, путем комбинирования (вычисления агрегатов) строк в локальных разделах. Использование комбинатора является чистой оптимизацией; это не влияет на окончательный результат вычислений.

В SQL/MR комбинирование поддерживается как опция при реализации функции над разделами. В некоторых случаях требуется передача данных по сети для формирования входных разделов для функций над разделами. Если в функции над разделами реализуется необязательный интерфейс для комбинирования, оптимизатор запросов при построении плана запроса может принять решение воспользоваться возможностью комбинирования до передачи данных по сети, сокращая число строк, которые придется передавать.

Мы осознанно из-за особенностей использования представляем средство комбинирование как деталь функции над разделами, а не как специальную разновидность функции. С точки зрения пользователя, составляющего запрос с вызовом функции над разделами, выполнение комбинирование не вносит какого-либо изменения в семантику. По этой причине мы оставили комбинирование деталью реализации, которая может приниматься во внимание разработчиком SQL/MR-функции, но является прозрачной для пользователей функции.



Содержание раздела