Разработка потокового процесса выгрузки данных в аналитическое хранилище

Материал из Машинное обучение - Кафедра прикладной кибернетики
Перейти к навигации Перейти к поиску

Постановка задачи

Источник -> Потоковый выгрузчик -> Целевая система


PostgreSQL -> ??? -> Clickhouse


Реализовать знаки вопроса, при помощи фреймворков для обработки потоковых данных

  • Очередь сообщений
    • Apache Kafka
  • Фреймворк для чтения
    • Apache Spark (Streaming и/или Structured Streaming)
    • Apache Flink
    • Kafka Streams


Забирать лог транзакций из PostgreSQL в потоковом режиме (т.е. во времени, приближенном к реальному).

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

Уведомления могут содержать в себе всё изменение, применённое данной транзакцией.

При помощи потокового обработчика эти события применяются к целевому хранилищу.


Цель работы:

  1. Изучить возможности фреймворков
  2. Сравнить их по критериям:
    1. Надёжность
    2. Скорость доставки данных (т.е. максимальное время, которое прошло с момента появления данных в источнике до момента их появления в целевой системе)
    3. Пропускная способность (транзакций в секунду, tps)

План работы

  1. Верхнеуровнево познакомиться с системами (найти литературу = книги, статьи в научных журналах)
  2. Работа с источниками: посмотреть как вообще решают эту задачу
  3. Разбить работу на этапы. Записать этот план
  4. Реализация этапов
  5. Написание текста работы

Рекомендуемая литература

  1. Martin Kleppmann. Designing data-intensive applications.