Работа с Python в SQ Server 2017. Введение

Вы, наверное, знаете, что начиная с версии SQL Server 2016 была возможность исполнять код на языке программирования R внутри SQL Server.

Теперь же, с версии SQL Server 2017 в ядре сервера также поддерживается язык программирования Python, для чего в SQL Server было внесено ряд изменений, позволяющих исполнять внешний код внутри ядра. Хотя, по правде говоря, не совсем внутри, а точнее сказать совсем не внутри, но давайте рассмотрим подробнее, по компонентам, см. рисунок ниже.

1.jpg

Если поанализировать структуру SQL Server 2016, то эти же, или почти эти, компоненты присутсвовали и в нем, но теперь с их помощью можно исполнять код написанный на языке Python.
Пару слов о каждой из компонент:

  • Launchpad - SQL Server Trusted Launchpad - это сервис SQL Server для поддержки исполнения внешних скриптов. Такой подход был также (ранее) реализован в системе полнотекстового поиска.
  • Binary Exchange Language (Bxl) Server – это исполняемый код от Microsoft, управляющий коммуникациями между SQL Server и Python.
  • SQL Satellite – это новый расширяемый API, обеспечивающий взаимодействие Binary Exchange Language (Bxl) Server и SQL Server. Он также отвечает за возврат запрошенного результата.

Обратите внимание на то, что часть комопнент связана через внутренние коммуникации с использованием протокола Named Pipe, для ускорения обмена данными.

Порядок взаимодействия:

  1. Запрос для среды Python, использующий параметр @language='Python', передается в хранимую процедуру, и SQL Server оправляет его Launchpad-сервису.
  2. Launchpad-сервис стартует соответствующий исполнительный механизм. В данном случае PythonLauncher.
  3. PythonLauncher стартует внешее исполняемое ядро (процесс (или процессы) Python35).
  4. BxlServer координирует со средой Python обмен данными и сохранение результатов работы.
  5. SQL Satellite отвечает за управление коммуникациями для соответствующих задач и процессов SQL Server.
  6. BxlServer использует SQL Satellite для коммуникаций и возврата результата исполнения с SQL Server.
  7. SQL Server получает результат и дает команду на закрытие соответствующих задач и процессов.

Данные подход позволяет расширить SQL Server практически любыми внешними языкам.

Как видно из рисунка ниже, перенос исполнительного механизма Python внутрь SQL Server решил проблему параллельного исполнения кода Python в ОС Windows.

2.jpg

Для расширения возможностей Python в SQL Server, Microsoft разработал специальную библиотеку RevoscalePy, обеспечивающую различные методы обработки данных включая:

    • linear model (модель линейного анализа),
    • logistic regression (логистическая регресия),
    • random forest (случайный лес),
    • decision tree (дерево принятия решения)
    • boosted decision tree
    • и много другое.

Дополнительные алгоритмы такие как, нейронные сети поставляются в microsoftml как отдельный пакет для Python в MicrosoftML.

Перед выходом в свет SQL Server 2017 в SQL Server 2016 был только R-Services в двух ипостасях:

  • In-Database R-Services
  • Standalone R-Services

Сейчас (после добавления Python) все это называется Machine Learning Services, включающий в себя R и Python в виде:

  • In-Database Python (R) Services (отдельная компонента SPS_x.x.x.x_1033.cab)
  • Standalone Python (R) Services (отдельная компонента SPO_x.x.x.xx_1033.cab)

SPS_x.x.x.x_1033.cab и SPO_x.x.x.xx_1033.cab перед запуском SQL Server Installation Center должны быть загружены из Internet и размещены в папке.

Для установки поддержки Python, запустите SQL Server Installation Center.

Выберите вариант установки. Если вы устанавливаете In-Database Python (R) Services. то выберите как показано на рисунке ниже. Если же вы устанавливаете его в режиме Standalone, то выберите раздел из Shared Features. 

3.jpg

Если же вы устанавливаете его в режиме Standalone, то выберите раздел из Shared Features. 

4.jpg

Если вы собираетесь разрабатывать, тестировать или отлаживать ваш собственный Python-код, то рекомендую использовать следующие компоненты:

  • Visual Studio 2017 поддерживающий как R, так и Python.
  • Если у вас уже установлена более ранняя версия Visual Studio, то Python Extensions для Visual Studio позволит вам легко управлять средой разработки для Python.
  • PyCharm – очень популярная среда для разработчиков Python приложений.

На этом установка Python для работы на SQL Server в режиме In-Database Python (R) Services завершается.

Настройку SQL Server для исполнения кода и написание кода мы рассмотрим в следующей статье.  


Александр Каленик, Senior Premier Field Engineer (PFE), MSFT (Russia)