Разработка потокового процесса выгрузки данных в аналитическое хранилище
Перейти к навигации
Перейти к поиску
Постановка задачи
Источник -> Потоковый выгрузчик -> Целевая система
PostgreSQL -> ??? -> Clickhouse
Реализовать знаки вопроса, при помощи фреймворков для обработки потоковых данных
- Очередь сообщений
- Apache Kafka
- Фреймворк для чтения
- Apache Spark (Streaming и/или Structured Streaming)
- Apache Flink
- Kafka Streams
Забирать лог транзакций из PostgreSQL в потоковом режиме (т.е. во времени, приближенном к реальному).
Обычно реализуется некий механизм, оповещующий об изменениях, произошедших в записях PostgreSQL. Уведомления об этих изменениях отправляются в очередь сообщений.
Уведомления могут содержать в себе всё изменение, применённое данной транзакцией.
При помощи потокового обработчика эти события применяются к целевому хранилищу.
Цель работы:
- Изучить возможности фреймворков
- Сравнить их по критериям:
- Надёжность
- Скорость доставки данных (т.е. максимальное время, которое прошло с момента появления данных в источнике до момента их появления в целевой системе)
- Пропускная способность (транзакций в секунду, tps)
План работы
- Верхнеуровнево познакомиться с системами (найти литературу = книги, статьи в научных журналах)
- Работа с источниками: посмотреть как вообще решают эту задачу
- Разбить работу на этапы. Записать этот план
- Реализация этапов
- Написание текста работы
Рекомендуемая литература
- Martin Kleppmann. Designing data-intensive applications.