В этой статье мы представили
В этой статье мы представили SQL/MapReduce – новую инфраструктуру для определяемых пользователями функций. В этой инфраструктуре функции являются самоописываемыми, полиморфными и естественным образом параллелизуемыми – как для многоядерных процессоров, так и для массивно-параллельных кластеров. Функции принимают на входе и прозводят на выходе отношения; в этом смысле их поведение идентично подзапросам SQL. Это позволяет производить композиции функций, т.е. вызовы функций могут быть вложенными, а результаты вызовов можно соединять с результатами подзапросов или других функций. В действительности, SQL-запрос с вложенными подзапросами и вызовами функций теперь тривиальным образом определяет путь потока данных, связывающий подзапросы SQL и вызовы SQL/MR-функций. Поскольку функции ведут себя подобно подзапросам, мы обеспечиваем возможность оценочному повторному оптимизатору запросов собирать статистику во время выполнения запросов и изменять порядок выполнения функций и подзапросов для повышения производительности. SQL/MR-функции являются самоописываемыми во время обработки запросов, что позволяет им выбирать свое поведение и результирующую схему на основе контекста, в котором они используются. Этот самоописываемый динамический полиморфизм содействует созданию развитых аналитических библиотек, которые могут использоваться в самых разных контекстах.
Мы также представили реализацию инфраструктуры SQL/MapReduce в массивно-параллельной, без совместного использования ресурсов СУБД nCluster компании Aster. В этой реализации функции могут управлять собственными структурами в основной и дисковой памяти. СУБД управляет ресурсами, потребляемыми функциями, что обеспечивает безопасность выполнения функций для общей жизнеспособности системы.
Обеспечивая модель погружения мощных функций в среду параллельной базы данных, инфраструктура SQL/MR поддерживает дружественность СУБД по отношению к приложениям.