Выбор CDC сделан
Нам очень хотелось сделать CDC из наших MySQL в Hadoop вместо StarRocks: это сильно уменьшает стоимость хранения, это убирает затраты ресурсов из дорогого места выполнения запросов в дешевое место технических джобов и больших серверов, это убирает лишние копии данных.
Не вышло. Не вышло так хотели.
Apache Paimon + Flink. Связка работает и вроде как работает неплохо. К сожалению доклад на смартдату сорвался :( Какие минусы: реализация в кубе - отстрел своих ног, снятие начального снепшота - проще застрелиться на бд большого размера, отсутствие вообще любого решения для non-pk таблиц. И самое главное - жаба жрет память ведрами, проигрыш современным нативным решениям такой, что даже нет смысла туда смотреть. Это гигабайты-десятки гигабайт против десятков и сотен мегабайт. Проблема сверок, проблема мониторинга. Проблема скорости внедрения (тут очень субьективная штука), но 8 месяцев заняло обстучать грабли у одного человека.
Оставили работать на 2 достаточно больших базах данных, чтобы посмотреть стоимость поддержки.
Итоговое решение (которое изначально не хотелось делать): допилили свой репликатор для Vertica, теперь он вставляет данные в StarRocks, и он же снимает дампы для флинка и восстанавливает их в Paimon 😂
Upsert здесь неплохо выручает, в итоге даже с реализацией транзакций в 3.5 ветке все работает достаточно стабильно.
Потребление памяти в районе 40-50 мегабайт на сам сервис, ну и компакшн в ср выдает цифры в десятки/сотни мегабайт. Даже на дампе и импорте начального снепшота потребление не больше 100 мегабайт для любого размера таблиц и скорость на порядок выше флинка.
Время реализации: около полутора недель активного написания кода + неделя отладки.
Так как написано на golang, то в к8с встало как родное.
PS можно много выводов сделать, но основной для меня - AI позволяет не бояться делать такие штуки и при наличии мозга получается очень адекватно реальности. Когда-нибудь мы донесем репликатор до опенсорса, но мне кажется что быстрее MySQL вымрет в округе :)