Модель выполнения, обеспечиваемая SQL/MR-функциями, является обобщением модели MapReduce [7]. Если использовать термины MapReduce, SQL/MR-функция может быть либо отображателем (mapper), либо сжимателем (reducer), что мы назывем функцией над строками (row function) и функцией над разделами (partition function) соответственно. В SQL/MR-функциях можно реализовать оба интерфейса, если для данной функции осмысленны оба режима работы. Как показано на рис. 5, по причине интеграции SQL/MR с SQL тривиально образуется любая комбинация map и reduce SQL/MR-функций. В SQL/MR допускается любое число и любой порядок вызовов функций map и reduce, вставленных в SQL-запрос, в то время как в MapReduce можно вызвать только одну функцию map, а затем только одну функцию reduce.
Модель выполнения SQL/MR разработана для использования в массивно-параллельной СУБД и поэтому должна быть по умолчанию параллельной. Экземпляры функции SQL/MR будут выполняться параллельно в каждом узле параллельной СУБД, точно так же, как в среде MapReduce в кластере выполняются задачи map и reduce. Число экземпляров SQL/MR-функции в одном рабочем узле не фиксированно. Каждый экземпляр видит некоторый уникальный набор строк, т.е. каждая строка обрабатывается только одним экземпляром SQL/MR-функции. Определения функций над строками и разделами обеспечивают их параллельное выполнение масштабируемым образом. Даже при наличии в СУБД всего одного узла инфраструктура SQL/MR остается полезной, поскольку обеспечивает полиморфные и самоописываемые UDF, которые могут распараллеливаться на нескольких процессорных ядрах.
Теперь мы опишем функции над строками и разделами, а также покажем, как их модели выполнения поддерживают параллелизм.