Что лучше для аналитики в реальном времени: ksqlDB vs OLAP-база данных?

ksqlDB vs Rockset потоковая аналитика больших данных кейсы примеры курсы обучение, обучение большим данным примеры кейсы курсы, Apache Flink курсы примеры обучение, Apache Kafka курсы примеры обучение, event streaming курсы примеры обучение, Школа Больших Данных Учебный центр Коммерсант

В этой статье для обучения ИТ-архитекторов и дата-инженеров сравним 2 подхода к аналитике больших данных, чтобы решить, когда потоковые вычисления, например, средствами ksqlDB в рамках Apache Kafka лучше аналитических баз данных реального времени, таких как Rockset, и наоборот.

2 способа выполнения аналитики больших данных в реальном времени

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

  • потоковая аналитика, когда вычисления производятся непрерывно в режиме реального времени, пока данные передаются из одного места в другое по конвейеру их обработки. Например, именно это поддерживает ksqlDB – компонент распределенной платформы потоковой передачи событий Apache Kafka, а также вычислительные движки Flink, Spark, Storm и т.д.
  • аналитические базы данных реального времени, которые оперативно принимают данные и позволяют выполнять быстрые аналитические запросы к ним. Примером такого OLAP-хранилища реального времени является Rockset, бессерверное и полностью управляемое решение, которое позволяет выполнять запросы к массивным полуструктурированным данным без операционной нагрузки.

Потоковая аналитика больших данных c ksqlDB

Чтобы справиться с масштабом и скоростью генерируемых данных, их следует поместить в очередь или поток, чтобы отделить механизм переноса данных от вычислений. Но, поскольку данные передаются в режиме реального времени, имеет смысл также обрабатывать и анализировать их сразу же. Для этого компания Confluent, которая коммерциализирует платформу с открытым исходным кодом Apache Kafka, разработала kqlDB – SQL-подобный интерфейс для потоков данных, который позволяет фильтровать, агрегировать и соединять их. Kafka используется ksqlDB в качестве механизма хранения, а сам ksqlDB работает как вычислительный движок. Он имеет встроенные коннекторы к внешним источникам данных, например, JDBC-драйверы для реляционных СУБД, чтобы данные перенести в Kafka для обогащения потоком в реальном времени.

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

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

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

Сделать это можно двумя способами:

  • часто опрашивать местоположение водителя и каждый раз при получении местоположения отображать его на экране, а также выполнять расчеты для оценки времени их прибытия;
  • непрерывно транслировать местоположение водителя и пользователя в режиме реального времени. Этот же поток можно использовать для получения местоположения водителя в целях отображения, а также с помощью push-запроса ksqlDB рассчитать время прибытия. Приложение подписывается на вывод этого push-запроса, и каждый раз при изменении времени прибытия, автоматически обновляет информацию об этом.

Rockset: аналитическая база данных в реальном времени

Аналитическая база реального времени позволяет сохранить преимущества постоянного хранилища, а также предоставляет возможности аналитических вычислений практически в режиме реального времени. Одной из таких баз является RocksDB – адаптируемое, встраиваемое и постоянное key-value хранилище, которое используют приложения Kafka Streams и Flink для хранения состояний. Об этом мы писали здесь и здесь. Также на базе RocksDB основана целая аналитическая платформа Rockset, которая обеспечивает поиск, агрегацию и соединение массивных полуструктурированных данных в режиме реального времени без дополнительной нагрузки. Rockset автоматически индексирует структурированные, полуструктурированные, географические и временные данные для поиска в реальном времени и масштабной аналитики.

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

Потоковая обработка данных с помощью Apache Flink

Код курса
FLINK
Ближайшая дата курса
1 марта, 2023
Длительность обучения
16 ак.часов
Стоимость обучения
44 000 руб.

С Rockset полученные данные становятся доступными для запросов через 1-2 секунды после их загрузки, а аналитические запросы к ним обычно выполняются за миллисекунды. С помощью конвергентного индекса все данные автоматически индексируются тремя способами по столбцам, строкам и поиску во время приема. Оптимизатор SQL-запросов проверяет каждый запрос и выбирает план выполнения для оптимальной производительности. Rockset настолько оптимизирован для потоковых вычислений, что может обслуживать приложения с высокой степенью параллелизма в диапазоне до 100 ТБ или более 100 ТБ с накопительными пакетами. Но Rockset – это не просто хранилище данных, и оно не подходит для случайных запросов к набору данных петабайтного масштаба.

Rockset интегрируется со следующими внешними источниками данных: сервисы Amazon (DynamoDB, Kinesis, S3, MSK), Apache Kafka, облачные объектные хрнилища и сопутствующие службы (Google Cloud Storage, Microsoft Azure Blob Storage, Microsoft Azure Event Hubs, Microsoft Azure Service Bus), реляционные СУБД (Microsoft SQL Server, MongoDB, MySQL, Oracle, PostgreSQL). Rockset может отслеживать потоки измененных данных (Change Data Capture, CDC) как из реляционных СУБД, так и из NoSQL-хранилищ. Также Rockset поддерживает сложные аналитические сводки для потоков Amazon Kinesis и Apache Kafka. Для интеграции с любым из источником данных или потоковых вставок в режиме реального времени можно использовать REST API.

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

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

Что и когда выбрать?

Некоторые аналитические СУБД поддерживают прием данных без схемы и могут делать выводы о структуре данных при их чтении, чтобы снимает необходимость предварительного определения схемы. В частности, Rockset позволяет вводить данные в коллекцию без определения схемы, что дает возможность гибко запрашивать данные и полезно, если их структура меняется с течением времени. Аналогично, ksqlDB может подключиться к топику Kafka, который принимает полуструктурированные данные. Однако, чтобы ksqlDB мог запрашивать эти данные, необходимо заранее определить их схему.

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

Таким образом, выбор потоковая аналитика vs аналитическая БД реального времени зависит от сценариев использования. Если данные уже проходят через топики Kafka, и нужно выполнять некоторые запросы в реальном времени к ним в процессе передачи, ksqlDB – это самый подходящий вариант без дополнительный инвестиций в инфраструктуру загрузки данных в аналитическую базу. Потоковая аналитика позволяет преобразовывать, фильтровать и соединять события по мере поступления данных, и приложение может подписаться на эти результаты, чтобы получать постоянно обновляемые результаты.

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

Подробнее о про сходства и различия этих 2-х технологий потоковой обработки данных читайте в нашей новой статье.

Узнайте больше подробностей по проектированию и поддержке современных дата-архитектур в проектах аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/rocksetcloud/streaming-analytics-with-ksql-vs-a-real-time-analytics-database-41459fd8f26b
  2. https://rockset.com/docs/

Поиск по сайту