Служба SQL Server R – для чего?

Одним из нововведений в SQL Server 2016 – стала новая служба SQL Server R. И если многие знают что представляет из себя SQL Server. Некоторые знают, что же такое язык R и для чего он нужен. Но для чего необходимо было встраивать R в SQL Server?

SQL Server – как платформа

SQL Server всё больше перестает быть простым сервером баз данных. Теперь это скорее целая платформа для обработки данных. Платформа интеллектуальной обработки данных.

Служба SQL Server R – это встроенный в базу данных функционал аналитики, глубоко интегрирующий R в SQL Server. В компании Microsoft стремятся максимально приблизить аналитические возможности представляемые языком R к данным. Создав тем самым платформу интеллектуальной обработки данных. И дело здесь в том, что единая платформа позволяет гораздо легче использовать и управлять R, связывая его с данными на сервере баз данных. Используя эти возможности как напрямую, так и через клиентские приложения для обработки данных.

Проблема открытого исходного кода R

С открытым исходным кодом R есть три основные проблемы. И вот как в Microsoft решают эти проблемы, приближая аналитику к данным на SQL Server.

Проблема первая – передача данных

Передача данных из базы данных в среду выполнения R может оказаться как небезопасным, так и длительным процессом. Для более точного анализа необходимо исследовать значительные объемы данных и чем больше данных, тем дольше будет идти передача данных. Кроме того сам процесс передачи может быть небезопасен и нести риски с точки зрения информационной безопасности. Особенно остро эти два вопроса могут стоять при анализе данных попадающих под классификации персональных данных или данных для служебного пользования. К безопасности которых предъявляются особые требования.

Решение  — уменьшить или полностью исключить необходимость передачи данных, встроив аналитику R в саму базу данных.

Проблема вторая – исполнение скриптов R

Разработчики программного обеспечения, которые пробовали использовать R в своих приложениях, знают, как бывает сложно вызвать сторонний скрипт. Что для этого использовать? Библиотеки сторонних разработчиков, которые иногда представляют лишь ограниченные возможности. Переносить скрипты с R на другой язык? Всё это порой тяжело и трудоемко.

Решение

  • Использовать привычные, для разработчиков баз данных, хранимые процедуры T-SQL для вызова скриптов R.
  • Встроить результаты выполнения скриптов R в приложение.
  • Использовать возможности управления ресурсами для контроля и управления процессом исполнения скрипта R на сервере.
Проблема третья – масштабируемость и производительность уровня предприятий

Очень серьёзной проблемой с точки зрения масштабируемости и использования на уровне предприятий являются ограничения среды выполнения R. Чаще всего скрипты выполняются в однопоточном режиме, а результат выполнения может быть размещен только в доступной памяти.

Решение

  • использование возможностей запросов оптимизированных для выполнения в памяти и columnstore индексов.
  • RevoScaleR используемая в службе SQL Server R поддерживает большие наборы данных и параллельное выполнение скриптов.
Архитектура масштабируемости SQL Server

Основой этой платформы анализа данных является новая архитектура расширяемости SQL Server 2016.

Способ, которым взаимодействуют R и SQL Server в Microsoft называют архитектурой расширяемости. До этого CLR давала возможность при помощи хранимых процедур запустить внешний код/скрипт на выполнение, но он всё равно запускался в пространстве процесса SQL Server. Возможность запуска таких скриптов могла привести к нарушениям в работе сервера баз данных. Кроме того хоть внешний процесс запускался в пространстве сервера баз данных, SQL Server ни как не мог повлиять на процесс выполнения.

В новой версии была создана новая универсальная расширяемая архитектура. Которая позволяет запускать внешний код, такой как скрипты R уже не внутри процесса SQL Server. Если при установке SQL Server Вы устанавливали и службу R, то в менеджере конфигурации Вы можете увидеть новую службу – Launchpad.

Интерфейс T-SQL: sp_execute_external_script

Так каким же образом внешние скрипты, такие как скрипты R используют новую архитектуру? Для этого была создана новая хранимая процедура sp_execute_external_script. Эта процедура имеет все атрибуты других хранимых процедур. У нее есть параметры, она возвращает значения и может вызываться из любого клиентского приложения.

Запуская процедуру, Вы описываете что и каким образом хотите выполнить. Процедура через именованный канал связывается со службой Launchpad и отправляет ей сообщение. И уже служба запускает на выполнение внешний скрипт. На текущий момент поддерживается выполнение только на языке R.

Источник

Добавить комментарий