Ответ
Нет, Apache Kafka — это не система долгосрочного хранения, а распределённый потоковый брокер сообщений. Её основная цель — эффективная обработка потоков данных в реальном времени.
Почему Kafka не подходит для долгосрочного архивирования:
- Ограниченный срок хранения (Retention): Данные в топиках хранятся ограниченное время (по умолчанию 7 дней) или до достижения лимита размера.
- Отсутствие гарантий ACID: Kafka не предоставляет полных ACID-транзакций, как реляционные СУБД, что может привести к потере данных при сбоях.
- Оптимизация для чтения/записи потоков: Архитектура оптимизирована для последовательного доступа, а не для произвольных запросов к историческим данным.
Однако хранение возможно в ограниченном виде:
- Retention можно увеличить через конфигурацию.
# Хранение данных 30 дней или до 1 ТБ на раздел (partition) log.retention.hours=720 log.retention.bytes=1099511627776 - Для чтения «холодных» данных можно использовать компактирование топиков (log compaction), которое сохраняет последнее значение для каждого ключа.
Best Practice: Для долгосрочного хранения критичных данных используйте Kafka в связке со специализированными системами (например, S3, HDFS или OLAP-БД), куда данные сбрасываются через коннекторы (Kafka Connect).