Kinetica DB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:55, 21 января 2019.
Kinetica DB
LogoKinetica.png
Разработчики: Kinetica Inc.
Выпущена: 2009
Локализация: Английский
Тип ПО: Реляционная база данных
Веб-сайт www.kinetica.com

Kinetica DB - это аналитическая база данных в оперативной памяти, ускоряемая графическим процессором, которая обеспечивает ответ в реальном времени на запросы больших, сложных и потоковых наборов данных. Полностью распределенная архитектура Kinetica и упрощенные структуры данных обеспечивают более предсказуемое масштабирование. Аналитика в базе данных с помощью пользовательских функций (UDF) открывает путь для конвергентных рабочих нагрузок AI и BI, ускоряемых графическими процессорами. Kinetica поставляется с собственным геопространственным и визуализирующим конвейером для интерактивной аналитики на основе определения местоположения. Организации используют Kinetica для одновременного приема, исследования, анализа и визуализации данных в течение миллисекунд, чтобы принимать важные решения, снижать затраты, получать новые доходы и улучшать качество обслуживания клиентов.[Источник 1]

Обзор

Технология с ускорением GPU

История

Современные приложения оптимизированы вокруг многоядерной структуры, что позволяет выполнять многие инструкции параллельно. Однако количество ядер внутри одного процессора ограничено из соображений сложности и высокой стоимости: в каждом ядре необходимо разместить полноценный процессор x86-архитектуры, со своим кэшем, конвейером инструкций, блоками SSE, множеством блоков, выполняющих оптимизации и т.д. Было предложено использовать вычислительную мощность графических процессоров, которые лишены многих недостатков центрального процессора:

  • 5000+ ядер на устройство по сравнению с ~ 16 ядрами на типичный процессор
  • высокая производительность вычислений позволяет использовать GPU для решения огромных задач обработки данных.

В результате появилась технология nVidia CUDA, определяющая интерфейс, который позволил перенести вычисление сложных алгоритмов на GPU, за ней последовала ATi (AMD) с собственным вариантом технологии под названием Close to Metal (Stream), а совсем скоро появилась ставшая стандартом версия от Apple, получившая имя OpenCL.

GPU в Kinetica

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

Рисунок 1 - Увеличение производительности за счет распараллеливания между CPU и GPU

Запуск

Диспетчер хостов в Kinetica - это процесс супервизора, который лежит в основе начальной загрузки системы в кластере. Диспетчер хостов запускает глобальный менеджер Kinetica, который является контроллером для конфигурации системы в кластере. Когда кластер запускается, на каждом сервере начинается несколько процессов, называемых рангами. Каждый ранг отвечает за один графический процессор. На машине с несколькими графическими процессорами запускается один ранг на каждый графический процессор. При запуске "рабочие ряды" отправляют свой статус глобальному менеджеру. С помощью веб-интерфейса администратор может контролировать, какой процесс ранжирования выполняется на каком графическом процессоре сервера. Когда запускается процесс главного агрегатора, он не запускает HTTP-сервер, а ожидает, когда глобальный менеджер сообщит ему, что рабочие процессы готовы. После того, как все готовы, процесс главного агрегатора запускает HTTP-сервер, чтобы разрешить выполнение запросов. Когда рабочие сервера запускаются, они проверяют связь с глобальным менеджером, и соответствующие тома начинают загружать данные. При первом запуске кластера Kinetica создаются необходимые файлы на диске. Это в первую очередь для управления сохранением данных. Однако, если на диске уже есть данные (вероятно, из-за перезапуска сервера), серверы считывают данные с диска в память. Этот процесс называется разогревом. Если включен режим multi-head, рабочие процессы запускают HTTP-сервер и уведомляют глобального менеджера о готовности обслуживать запросы. В целях обеспечения высокой доступности и равномерного распределения рабочей нагрузки каждый кластер имеет один необязательный компонент HAProxy, который выполняется на том же оборудовании, что и сам кластер.

Архитектура памяти

Kinetica работает полностью в оперативной памяти, чтобы оптимизировать пропускную способность и обеспечить высокую производительность запросов. Во время прогрева данные загружаются с диска в память. Многоуровневая система управления памятью Kinetica гарантирует, что данные горячих, теплых и холодных таблиц распределяются между ресурсами ОЗУ и VRAM (память, доступная на самой карте GPU). Эта архитектура позволяет Kinetica обеспечивать исключительную производительность при различных конфигурациях оборудования и размерах наборов данных. Горячие данные обычно хранятся в VRAM. Холодные данные обычно хранятся на диске.

Как правило, аналитические наборы данных велики и труднообрабатываемы, настраиваемая конструкция Kinetica, ориентированная на колонки, обеспечивает эффективное хранение наборов данных. На рисунке 2 столбцы аналитических данных выделены синим цветом, значения этих столбцов могут располагаться совместно для ускорения выполнения запросов, а также могут быть сжаты для эффективной экономии места. Если посмотреть на рисунок 2, то можно увидеть, что каждый столбец разделен на 3 сегмента, которые по отдельности сжимаются с использованием словарей. Словари значительно сокращают использование памяти таблицами и помогают быстро перемещать значения столбцов из CPU в GPU. При необходимости копия сегмента столбца распаковывается для использования и удаляется после обработки. Если данные в столбце обновляются, то связанный сегмент столбца распаковывается, изменяется, а затем немедленно сжимается. Для столбцов со строковыми значениями данных словари создаются для достижения лучших коэффициентов сжатия. Благодаря колоночно-ориентированному дизайну Kinetica не требуется преобразований строк в столбцы или восстановления данных, что приводит к невероятной производительности запросов. Запросы, которые работают со столбцами, также векторизованы для использования многоядерных и графических архитектур. Такая конструкция позволяет обрабатывать несколько значений столбцов одновременно в пакетах, а не по одному, что повышает пропускную способность запросов.

Рисунок 2 - Представление данных в виде колонок

Обработка запросов

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

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

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

Безопасность

Для соответствия нормативным требованиям и требованиям соответствия Kinetica поддерживает несколько функций безопасности, включая аутентификацию, авторизацию, аудит и шифрование. Kinetica может быть настроен для работы с аутентификацией клиента или без него. Когда аутентификация клиента активируется с помощью параметров конфигурации безопасности кластера, учетные данные пользователя передаются на сервер для запросов на соединение API, WMS и ODBC. В кластере HAProxy компонент получает эти запросы и передает их на HTTPd, который является предварительно сконфигурированным демоном Apache HTTP, который запускается на каждом сервере. HTTPd извлекает учетные данные пользователя из запроса и проверяет их на локально сохраненные учетные данные пользователя или на соответствующий сервер LDAP. Если аутентификация выполнена успешно, запрос обрабатывается. Если аутентификация завершается с ошибкой, сообщение об ошибке отправляется обратно запрашивающему клиенту.

Что касается авторизации, модель безопасности Kinetica похожа на другие базы данных SQL и имеет модель управления доступом на основе ролей. Разрешения определяются на таких ресурсах, как отдельные таблицы, коллекции таблиц или сам экземпляр Kinetica. Разрешения выдаются согласно ролям. Разрешения определяются на таких ресурсах, как отдельные таблицы, коллекции таблиц или сам экземпляр Kinetica. Аудиторская деятельность фиксируется в файлах формата JSON. Чтобы контролировать объем созданных аудиторских записей, уровень аудита может быть настроен для захвата только заголовков HTTP, тела запроса HTTP или полных данных аудита.

Управление данными

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

Масштабируемость

Благодаря симметричному характеру всех серверов масштабирование Kinetica up-and-out является простым и линейным. Загрузка данных в кластер для аналитики и отчетности отличается высокой степенью быстродействия. Записи данных могут поступать в таблицы с использованием распределенных механизмов приема и экстракции. Это позволяет очень быстро загрузить соответствующие таблицы с миллиардами строк без каких-либо требований к индексированию.

Визуализация данных

Интегрированная панель визуализации Kinetica, Reveal, обеспечивает интерактивное визуальное обнаружение, оптимизированное для временного и геопространственного анализа. Reveal позволяет пользователям быстро строить диаграммы и графики, исследовать их наборы данных. «Из коробки» Reveal поставляется с богатым набором диаграмм, диаграмм и визуализации карт на основе отраслевых стандартов, таких как D3 и OpenLayers.

Kinetica поддерживает широкий спектр отчетов, бизнес-аналитики и аналитические инструменты, основанные на местоположении. Драйверы ODBC / JDBC можно использовать для подключения таких инструментов, как Tableau, Tibco Spotfire, Microsoft PowerBI и т. Д. Или инструментов ETL, таких как Informatica. API-интерфейсы Geospatial WMS можно использовать для создания настраиваемого приложения с использованием API ESRI и MapBox.

Поддерживаемые языки

Kinetica предоставляет богатый набор API для запросов и управления данными. Для общения с Kinetica, SDK приложений доступны на различных языках, включая C++, Java, JavaScript, NodeJS, Python и C #. Существующие SQL-приложения также могут легко переноситься в Kinetica с помощью соединителя ODBC, совместимого с ANSI SQL-92. Дополнительные языковые привязки могут быть построены для любого языка, который может обрабатывать HTTP-запросы и разбора JSON.

Поддержка облачных технологий

Kinetica взаимодействует с облачными технологиями, используя мощь ускорения GPU в масштабируемых средах. Kinetica поддерживает AWS Amazon для новейших экземпляров GPU корпоративного класса от NVIDIA и экземпляров второго поколения Google с вариантами поддержки GPU. Поддерживаемые инфраструктуры:

  • суперкомпьютер DGX от NVIDIA
  • серверы IBM, Dell, HP Enterprise.

Источники

  1. Kinetica // Техническая документация Kinetica. [2016–2019]. URL: https://www.kinetica.com/inside-kinetica/ Kinetica Technical White Paper (дата обращения: 08.10.2018)