Что такое потоковая база данных?

Источник · Перевод автора

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

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

Что такое потоковая база данных?

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

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

Вот несколько хороших примеров важных вариантов использования:

  • Критичные ко времени службы, такие как Uber или Lyft
  • Непрерывные производственные процессы, такие как сборочные линии
  • Программное обеспечение для мониторинга видео или других датчиков при поиске аномалий
  • Научные эксперименты, которые необходимо постоянно анализировать
  • Каналы поставок

Как данные разделяются

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

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

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

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

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

Как адаптируются традиционные базы данных?

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

Например, Oracle Streams можно развернуть как службу или как локальную установку. Он будет собирать и преобразовывать данные из различных источников, а затем передавать их в другие службы, которые могут включать свои собственные базы данных. Формат сообщения разработан с учетом совместимости с Apache Kafka, открытым стандартом, что позволяет интегрировать его с другими приложениями Kafka.

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

Microsoft Stream Analytics также делает упор на аналитику, которая может происходить на пути от первого появления события до его конечного пункта назначения, которым может быть любое решение хранения Azure, включая базы данных SQL. Обработка, которая может быть написана на языке, подобном SQL, и включать другие распространенные языки, такие как JavaScript, также может обучать модели машинного обучения с помощью службы машинного обучения Azure. Диалект SQL включает временные ограничения, используемые для преобразования входящих данных, которые обычно отслеживают время и дату.

Служба Azure Stream Analytics также тесно интегрирована с службами искусственного интеллекта Microsoft для использования машинного обучения и видеоаналитики для деконструкции потока данных. Он предлагает синтаксис, подобный SQL, который может быть расширен кодом, написанным на JavaScript или C #.

А выскочки?

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

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

Equalum, например, предлагает инструмент для преобразования потока данных на пути к хранилищу данных или озеру данных с использованием более традиционных баз данных. Он построен на основе открытого исходного кода Apache Kafka и Spark и предлагает упрощенную визуальную среду кодирования, которая позволяет определять путь к данным в виде блок-схемы.

Разработчики, которым нравится работать с SQL, оценят ksqlDB, инструмент для приема и хранения данных, который использует версию SQL для определения основных задач. «Используйте знакомый, легкий синтаксис, чтобы получить мощный удар», – обещает литература по продажам. «Сбор, обработка и обслуживание запросов с использованием только SQL. Никаких других языков или услуг не требуется ». Инструмент тесно интегрирован с Kafka, что упрощает установку в существующие приложения, которые его используют.

Amazon называет свое основное предложение Kinesis и предлагает специальные предварительно настроенные пути для работы с видеопотоками. Он интегрирован с некоторыми инструментами искусственного интеллекта AWS, такими как Rekognition для анализа видео и SageMaker для базового машинного обучения.

Другие начинают создавать проекты с открытым исходным кодом, такие как Debezium, которые могут преобразовывать данные из потоков событий, управляемых Kafka или другими конвейерами.

Есть ли что-то, что не могут сделать потоковые базы данных?

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

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