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



         

Модель выполнения


Модель выполнения, обеспечиваемая 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, которые могут распараллеливаться на нескольких процессорных ядрах.

Теперь мы опишем функции над строками и разделами, а также покажем, как их модели выполнения поддерживают параллелизм.

  • Функция над строками. Каждая строка входной таблицы будет обрабатыватьтся ровно одним экземпляром SQL/MR-функции. Как описывается в разд. 4, с точки зрения семантики каждая строка обрабатывается независимо, что позволяет механизму поддержки выполнения контролировать параллелизм. Для каждой входной строки каждая функция над строками может произвести ноль или большее число строк.


    Содержание  Назад  Вперед