Интеллектуальный анализ данных хранилища Db2

Интеллектуальный анализ данных в Db2 Warehouse: основы

Запуск функций аналитики в базе данных из SQL, где находятся данные

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



Цель этого документа — позиционировать IBM Db2 Warehouse как эталонную платформу базы данных для разработки и развертывания рабочих нагрузок интеллектуального анализа данных. Он охватывает основные функции механизма хранилища данных, уделяя особое внимание доступным аналитическим процедурам, обзору структуры управления моделями и точкам расширения для использования Spark, Python или R на одной и той же общей платформе. Он должен служить отправной точкой для будущих рассказов о конкретных функциях и сценариях моделирования.

Обзор хранилища Db2

Db2 Warehouse [1] — это платформа хранилища аналитических данных, разработанная IBM. Построенное на базе Common SQL Engine от IBM, хранилище Db2 Warehouse доступно в облаке (IBM Cloud и Amazon Web Services) в виде управляемой службы или в виде образа Docker для пользовательского развертывания и простого масштабирования (рис. 1). Ключевые особенности включают в себя:

  • Оптимизация для аналитики. В Db2 Warehouse реализованы технологии IBM BLU Acceleration, в том числе обработка данных в столбцах в памяти, параллельная обработка векторов, сжатие высокой плотности и интеллектуальный пропуск данных. BLU Acceleration самооптимизируется, устраняя необходимость в индексах, агрегатах или периодической настройке базы данных, что делает его идеальным для приложений оперативной аналитической обработки (OLAP).
  • Масштабируемость и производительность. Следуя архитектуре без общего доступа, Db2 Warehouse поддерживает конфигурации как с одним, так и с несколькими разделами базы данных. Масштабирование достигается путем добавления новых логических или физических разделов в существующий кластер. В многораздельной базе данных таблица может быть размещена более чем в одном разделе, поэтому ее строки распределяются по членам кластера.
  • Виртуализация данных. База данных Db2 Warehouse может действовать как объединенная база данных одного или нескольких источников данных. Таким образом, один оператор SQL может получить доступ к данным, распределенным между различными разнородными удаленными источниками, как если бы данные хранились в одной базе данных. Кроме того, Db2 Warehouse поддерживает внешние таблицы, которые прозрачно указывают на файлы, находящиеся за пределами базы данных.
  • Управление рабочей нагрузкой. В Db2 Warehouse рабочие нагрузки можно классифицировать с точки зрения требований пользователей и приложений. Таким образом, ресурсы, такие как ЦП, приоритет доступа к памяти или максимальное время выполнения, могут быть выделены для каждой группы рабочих нагрузок. Это особенно важно для разделения интенсивных аналитических приложений, работающих в базе данных.
  • Настойчивость полиглота. Db2 Warehouse — это механизм не только SQL, поддерживающий реляционные структуры, пространственные данные и частично структурированные документы, такие как XML, JSON и BSON.
  • Функции интеллектуального анализа данных. Алгоритмы прогнозного моделирования реализованы в базе данных в виде аналитических процедур, которые можно вызывать с помощью SQL. Высокопроизводительные приложения для интеллектуального анализа данных могут быть реализованы без необходимости перемещения данных за пределы базы данных.

Разработка и развертывание приложений интеллектуального анализа данных в базе данных — одна из наиболее важных функций Db2 Warehouse.

Обучение алгоритма машинного обучения требует обширных взаимодействий с базой данных, поскольку данные необходимо повторно извлекать в каждую эпоху обучения. Этот процесс включает в себя несколько операторов SQL, которые, в свою очередь, могут создать множество сетевых операций отправки и получения (и связанные с этим затраты ЦП), если обучение выполняется во внешнем приложении. Однако, если обучение реализовано как подпрограмма, выполняемая в базе данных, все эти операторы SQL, включая те, которые записывают в таблицы результатов, инкапсулируются в одну операцию отправки и получения: сетевой трафик сводится к минимуму, можно обрабатывать больше данных, а производительность обучения повышается. улучшен. Это одно из основных преимуществ методов интеллектуального анализа данных в базе данных.

Аналитические процедуры

Db2 Warehouse предоставляет более 125 встроенных аналитических процедур [2], охватывающих различные этапы рабочего процесса решения для интеллектуального анализа данных: исследование и понимание данных, преобразование, моделирование, проверку и оценку. Большинство этих подпрограмм имеют форму хранимых процедур и определяемых пользователем функций. В первом случае вызов выполняется через инструкцию CALL к хранимой процедуре, а во втором — как часть SQL SELECT.

Эти подпрограммы являются частью каждого каталога базы данных в форме модуля SQL PL, SYSIBMADM.IDAX, который также содержит вспомогательные типы данных и переменные. Их можно разделить на шесть основных категорий.

Исследование данных

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

Статистическое тестирование

С помощью подтверждающего анализа данных вы можете проверить гипотезу и изучить данные из нескольких групп, проверяя независимость, корреляцию и значимость.

Преобразование данных

Категория преобразования данных содержит подпрограммы для преобразования анализируемых структур данных, чтобы сделать их более подходящими для дальнейшей аналитической обработки. Их можно легко связать с процедурами исследования и моделирования, чтобы согласовать конвейеры обучения, которые также можно запланировать.

Неконтролируемое обучение

Эти методы машинного обучения обнаруживают закономерности и взаимосвязи в наборах данных без предварительно определенных категорий и минимального контроля со стороны пользователя.

контролируемое обучение

Методы контролируемого обучения включают функции классификации и регрессии в зависимости от того, является ли целевая переменная категориальной или числовой. Все они реализуют режимы моделирования и скоринга.

Диагностические функции

Диагностические функции предоставляют методы для оценки точности и качества моделей классификации и регрессии на этапе проверки.

На рис. 2 представлен типичный конвейер модели классификации, охватывающий этапы исследования данных, подготовки данных, обучения и проверки. В листинге 1 подробно описывается каждый шаг конвейера с точки зрения используемой аналитической процедуры (хранимой процедуры), ее функциональных возможностей и необходимых аргументов.

Входной набор данных для пайплайна содержит результаты химического анализа 13 компонентов, присутствующих в нескольких винах, принадлежащих к трем разным сортам. Цель состоит в том, чтобы определить правильный сорт на основе этих составляющих.

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

Управление моделями

Алгоритмы машинного обучения генерируют модели интеллектуального анализа данных, которые хранятся в базе данных. Для управления ими предоставляется набор административных процедур, включая безопасность и разрешения. Каталог моделей находится в схеме SYSTOOLS и состоит из четырех таблиц, в которых хранятся разные метаданные модели (рис. 3):

  • IDAX_MODELS. Центральная таблица в каталоге, в которой хранятся общие свойства модели, включая имя модели, создателя, владельца, функцию анализа данных, алгоритм или источник модели, если модель была импортирована.
  • IDAX_PARAMS. Параметры, указанные при определении модели. К ним относятся исходная таблица, таблицы поддержки сопоставления имен, процедура, сгенерировавшая модель, а также любой гиперпараметр, определенный для алгоритма.
  • IDAX.COLPROPS. Свойства столбца в исходной таблице, используемые для создания модели. Некоторые из этих свойств получаются автоматически, например, тип SQL или кардинальность. Остальные указываются как часть определения модели, как и роль столбца (ввод, цель, вес и т. д.).
  • Компоненты IDAX.. В зависимости от функции интеллектуального анализа модели создаются разные таблицы результатов, содержащие параметры и аналитические данные модели. В этой таблице записываются все структуры данных, задействованные в модели, включая исходную, вспомогательную и результирующую таблицы.

Помимо требований определенных привилегий, к таблицам каталога моделей не следует обращаться напрямую. По этой причине несколько подпрограмм для управления метаданными представлены в разных категориях:

  • Административные операции. Эти функции используются для проверки состояния репозитория каталога моделей, включая инициализацию и сброс.
  • Список операций. Функции, обеспечивающие доступ только для чтения к таблицам каталога.
  • Операции по управлению моделью. Набор подпрограмм для обновления, удаления и получения сводок различных моделей, хранящихся в каталоге. Включены функции для экспорта и импорта моделей в собственном формате .mdl, а также для экспорта в виде модели PMML.
  • Операции безопасности. Предоставляйте, отзывайте или перечисляйте привилегии на уровне модели для разных пользователей, групп или ролей.

Короче говоря, Db2 Warehouse предоставляет полный API SQL для управления метаданными. Как и в случае с остальными аналитическими подпрограммами, вы можете взаимодействовать с этими функциями через сценарии SQL или внешние приложения, поддерживающие вызовы хранимых процедур. Кроме того, большинство этих функций доступны в интерфейсе веб-консоли Db2 Warehouse.

Расширение аналитических возможностей

Помимо запуска функций интеллектуального анализа данных в базе данных из SQL, существуют дополнительные опции для расширения аналитических возможностей среды базы данных Db2 Warehouse.

Пользовательские расширения

Функциональность базы данных может быть расширена за счет различных типов подпрограмм. В любом случае подпрограмма реализует логику в базе данных, то есть приложения выполняются в том же процессе, что и база данных, с минимальными сетевыми операциями и меньшими затратами на процессор. Результатом является значительное улучшение производительности процессов, интенсивно использующих данные, и выполнения SQL. Как описано выше, Db2 Warehouse уже предоставляет полный набор встроенных аналитических процедур. Однако можно расширить аналитические возможности, написав пользовательские расширения. Доступны несколько вариантов:

  • Подпрограммы SQL PL. Процедурный язык SQL Db2 — это расширение SQL, которое содержит операторы для объявления переменных и обработчиков условий, управляющие структуры и управление ошибками для реализации процедурной логики в базе данных. Эти языковые элементы можно использовать для разработки хранимых процедур, а также скалярных и табличных функций, которые можно упаковывать в модули. С точки зрения доступа к данным подпрограммы, реализованные в SQL PL, обеспечивают наилучший вариант с точки зрения производительности, безопасности и масштабируемости. Однако для сложной логики приложения они могут оказаться не лучшим вариантом. Эти расширения следует учитывать при реализации подпрограмм поверх встроенных аналитических процедур, поэтому они объединяются и обертываются для предоставления пользовательских компонентов и решений.
  • Внешние подпрограммы. Популярные языки программирования, такие как C/C++, Java, .NET, Python или Lua, можно использовать для реализации сложной логики в Db2 Warehouse. Если целью является реализация новых алгоритмов моделирования в базе данных, это, пожалуй, лучший вариант. В конце они будут вызываться прозрачно как часть инструкции SQL SELECT или CALL в случае хранимой процедуры. Чтобы развернуть эти функции, исходный код и дополнительные файлы необходимо загрузить в экземпляр Db2. Затем, после создания и компиляции файлов библиотеки, подпрограмма регистрируется в каталоге базы данных с указанием ее сигнатуры и класса.

Помимо других объектов базы данных, в Db2 Warehouse можно запутать пользовательские подпрограммы, чтобы их можно было развертывать в базе данных, не раскрывая логику приложения. Это важно для поставщиков решений и разработчиков, которые хотят защитить свою интеллектуальную собственность.

Встроенный механизм Apache Spark

Db2 Warehouse включает кластер Apache Spark, тесно интегрированный с ядром базы данных. Таким образом, можно развертывать, запускать и контролировать приложения Spark, которые напрямую считывают данные из базы данных, параллельно обрабатывают эти данные в кластере, а затем записывают результаты обратно в базу данных. Существует четыре возможных метода управления заданиями в интегрированном кластере Spark:

  • Хранимые процедуры SQL. Доступны три подпрограммы для запуска, мониторинга и отмены приложений Spark.
  • REST API. Как и в случае с хранимыми процедурами, для управления приложениями доступен аналитический API.
  • Инструмент командной строки. Предоставляется сценарий на основе cURL, который реализует подмножество сценария spark-submit, а также дополнительные специальные команды Db2 Warehouse.
  • Сервер Apache Livy. Db2 Warehouse предоставляет интегрированный и настроенный сервер Livy, который принимает задания Spark через REST или программный (Java, Scala, Python) API.

Поскольку исполнители Spark расположены вместе с узлами базы данных, задержка доступа к данным сведена к минимуму (рис. 4). Данные передаются с использованием общей памяти посредством межпроцессного взаимодействия, поэтому при обработке больших наборов данных наблюдается значительный прирост скорости.

Пакеты Python

Db2 Warehouse предоставляет несколько компонентов и расширений для доступа к базам данных из приложений Python:

  • ibm_db. Этот пакет предоставляет два API для подключения и управления базой данных (поддерживает серверы данных Db2 и Informix). API ibm_db определен IBM и предоставляет богатый набор методов для выполнения SQL-запросов, вызова хранимых процедур и управления объектами базы данных [3]. Второй — API ibm_db_dbi, реализующий спецификацию Python Database API версии 2.0. Хотя его функциональные возможности не столь обширны, он необходим, когда приложение должно соответствовать спецификации. Это тот случай, когда требуется доступ к базе данных через Pandas (листинг 2).
  • ibmdbPy. Этот пакет с открытым исходным кодом предоставляет интерфейс Python для аналитики в базе данных для доступа к данным и алгоритмам в Db2 Warehouse [4]. Он реализует интерфейсы библиотек Pandas и Scikit-learn для обработки данных и алгоритмов машинного обучения соответственно, помещая операции Python в базовую базу данных для выполнения. Предоставляя эквивалентные структуры данных, такие как IdaDataSeries, IdaDataFrames или IdaGeoDataFrames, ibmdbPy может очень эффективно обрабатывать большие объемы данных, снимая ограничения памяти и ЦП Python и используя возможности параллельной обработки и столбцового хранения Db2 Warehouse. Например, фрейм данных IDA использует ленивую загрузку, чтобы получить только те части данных, которые действительно необходимы: когда функция запрашивает данные, они не запускаются в приложении, а преобразуются в SQL-запрос, который выполняется в базе данных и результат переведен обратно в объект Python. В дополнение к операциям доступа к данным, ibmdbPy также предоставляет методы для выбора функций, корреляционного анализа, геопространственных функций в базе данных (использующих Db2 Spatial Extender), а также оболочки для нескольких алгоритмов машинного обучения, доступных в виде подпрограмм SQL.
  • Блокноты Jupyter. Чтобы упростить подключение и управление объектами Db2 в блокнотах Jupyter, можно импортировать расширение (db2.ipynb) [5]. Это расширение включает волшебную команду (%sql), которая позволяет интерпретировать введенный текст как сценарии SQL вместо кода Python. Таким образом, нет необходимости импортировать другие библиотеки доступа к базе данных, а перемещение данных в Pandas DataFrames выполняется просто (листинг 3).

R-пакеты

Подобно Python, программирование R в Db2 Warehouse основано на нескольких пакетах:

  • RODBC. Стандартный пакет, предоставляющий доступ к базе данных хранилища Db2 через интерфейс ODBC.
  • ibmdbR. Эквивалентно своему аналогу в Python, он позволяет проводить аналитику в базе данных непосредственно в Db2 Warehouse, реализуя конструкции фреймов данных IDA в R [6]. Многие аналитические процедуры SQL также доступны в этой библиотеке.

Выводы

Db2 Warehouse — это масштабируемая платформа, в которой данные и аналитика находятся в одном месте. Используя ядро ​​реляционной базы данных и язык SQL, рабочие нагрузки интеллектуального анализа данных можно развертывать там, где данные уже находятся, избегая извлечения в специализированные внешние системы.

Db2 Warehouse, оснащенный более чем сотней аналитических процедур, охватывающих алгоритмы исследования, преобразования и машинного обучения, также предоставляет возможности расширения с интегрированным кластером Spark и специализированными библиотеками Python и R. Это среда, в которой можно создавать и развертывать высокопроизводительные, ориентированные на данные аналитические приложения.

Общие ссылки

[1] Корпорация IBM, Документация по Db2 Warehouse, Центр продуктов Db2 Warehouse 11.5.

[2] Корпорация IBM, Аналитические хранимые процедуры, Центр знаний Db2 Warehouse 11.5.

[3] GitHub, Описание API для драйвера ibm_db, ibmdb — драйверы с открытым исходным кодом для серверов баз данных IBM.

[4] GitHub, Ускорение аналитики Python за счет обработки в базе данных, ibmdbanalytics

[5] GitHub, Расширения для ноутбуков Db2 Jupyter, примеры DB2.

[6] CRAN, IBM In-Database Analytics для R, ibmdbR

Доступ к программному обеспечению

Db2 Warehouse доступен в IBM Cloud и Amazon Web Services как гибкое и полностью управляемое предложение «Хранилище данных как услуга». Услуга доступна как в одноузловой, так и в многоузловой форме. В качестве альтернативы он также выпускается в виде образов Docker для пользовательского развертывания, которые можно получить из реестра IBM Cloud Container Registry.

Db2 Warehouse Developer Edition – это бесплатная полнофункциональная версия Db2 Warehouse, предназначенная для сред разработки и тестирования. Этот выпуск не предназначен для производственного использования и не поддерживает многоузловые развертывания. Образ Docker можно скачать с сайта IBM и за считанные минуты развернуть на ноутбуке.