Заменит ли Apache Kafka прочие СУБД в мире Big Data: за и против

Заменит ли Apache Kafka прочие СУБД в мире Big Data: за и против

    В этой статье мы поговорим про возможность нехарактерного использования Apache Kafka: не как распределенной стримминговой платформы или брокера сообщений, а в виде базы данных. Читайте далее, как Apache Kafka дополняет другие СУБД, не заменяя их полностью, почему такой вариант использования возможен в Big Data и когда он не совсем корректен.

    Что общего у Apache Kafka с базой данных и чем они отличаются

    В современном ИТ-мире есть множество видов баз данных, которые в большинстве случаев принято разделять на следующие категории [1]:

    • простейшие – файлы, иерархические и сетевые;
    • реляционные (MySQL, MariaDB, PostgreSQL, ClickHouse);
    • нереляционные или NoSQL (Elasticsearch, Cassandra, Apache HBase, MongoDB, Redis, Prometheus, InfluxDB, TimescaleDB, Tarantool);
    • комбинированные NewSQL (MemSQL, VoltDB, Spanner, Calvin, CockroachDB, FaunaDB, yugabyteDB) и многомодельные (ArangoDB, OrientDB, Couchbase).

    Независимо от того, к какой категории относится та или иная СУБД, она предназначена для систематизированного хранения данных, которые могут быть найдены и обработаны компьютеризированным способом [2]. Под это определение попадает масса систем, включая Data Lake на Apache Hadoop, Delta Lake на Spark, а также Kafka, которая является не просто инструментом обмена сообщениями по принципу «издатель-подписчик», а отказоустойчивой распределенной платформой потоковой передачи событий.

    При этом, подобно СУБД с поддержкой классических ACID-транзакций, Apache Kafka обеспечивает атомарность, согласованность, изолированность и долговечность хранимых данных [3] за счет механизмов гарантии доставки сообщений, репликации, средств конфигурирования топиков и настроек параметров очистки журналов. Также Кафка предоставляет возможности избирательного доступа к данными с помощью KSQL – SQL-движка на базе API Kafka Streams.  Кроме того, сама эта клиентская библиотека для разработки приложений и микросервисов, в которых входные и выходные данные хранятся в кластерах Кафка, также включает множество функций обработки потоковых данных в режиме онлайн.

    Тем не менее, не стоит считать Apache Kafka одной из множества СУБД по следующим причинам [4]:

    • несмотря на наличие KSQL и API Kafka Streams, «настоящие СУБД» типа Elasticsearch, ClickHouse и пр., обладают гораздо более мощным инструментарием в части поиска и обработки информации с помощью запросов;
    • при том, что Кафка может хранить данные вечно, надежно и с высокой доступностью, обеспечивая гарантии ACID-транзакций, она не заменяет, а дополняет другие хранилища данных (СУБД, DWH, Data Lake или Delta Lake), выступая в качестве платформы потоковой передачи событий для обмена сообщениями, хранения, обработки и интеграции в масштабе в реальном времени с нулевым временем простоя и нулевой потерей данных.

    Apache Kafka для инженеров данных

    Код курса
    DEVKI
    Ближайшая дата курса
    24 ноября, 2025
    Продолжительность
    24 ак.часов
    Стоимость обучения
    72 000

    Такие разные, но вместе: базы данных и стриминговая платформа в мире Big Data

    Таким образом, Apache Kafka можно рассматривать не столько как базу данных, сколько как журнал фиксации, интеграционный центр для множества внешних СУБД и хранилищ, которые представляют собой производные индексы или представления. При этом запросы обслуживаются из индексов, которые были созданы для соответствующего шаблона доступа. Это отлично демонстрирует принцип выполнения интерактивных запросов в API Kafka Streams. Обработка в приложениях Kafka Streams – это просто еще один потребитель Кафка, который может поддерживать вычисленное состояние, материализуя его вне потока. Это состояние можно запросить напрямую или передать во внешние системы. Это не включает запросы к Кафка напрямую, а скорее позволяет приложениям потоковой обработки сохранять производное материализованное представление данных в Кафка и выполнять запросы к ним с малой задержкой времени. Кластер Kafka хранит журнал, а API Kafka Streams хранит материализованное представление и обрабатывает запросы к нему. Это можно рассмотреть как своего рода разделительная линия между приложением и базой данных. Аналогично с KSQL-движком, который позволяет не писать сложный код на Java, а предоставляет SQL-операторы для непрерывного преобразования и вычисления материализованных представлений из Kafka и выполнения запросов к ним [5]. Подробнее о том, что такое материализованное представление мы рассказывали здесь на примере интеграции Кафка c СУБД ClickHouse. В следующей статье мы продолжим разговор про Apache Kafka и рассмотрим кейс The New York Times. А почему не стоит даже пытаться реализовать постоянный обмен сообщениями в стиле Kafka с помощью СУБД, читайте в этом материале.

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

    1. https://proglib.io/p/11-tipov-sovremennyh-baz-dannyh-kratkie-opisaniya-shemy-i-primery-bd-2020-01-07
    2. https://ru.wikipedia.org/wiki/База_данных
    3. https://ru.wikipedia.org/wiki/ACID
    4. https://www.kai-waehner.de/blog/2020/03/12/can-apache-kafka-replace-database-acid-storage-transactions-sql-nosql-data-lake/
    5. https://www.confluent.io/blog/okay-store-data-apache-kafka/