Мне нужно вставить данные ETL в мой экземпляр Cloud SQL.Эти данные поступают из вызовов API.В настоящее время я запускаю пользовательский код Java ETL в Kubernetes с помощью Cronjobs, который делает запрос на сбор этих данных и загрузку их в Cloud SQL.Проблема заключается в управлении кодом ETL и мониторинге заданий ETL.Текущее решение может плохо масштабироваться, когда включается больше процессов ETL.В этом контексте мне нужно использовать инструмент ETL.
Экземпляр My Cloud SQL содержит два типа таблиц: общие таблицы транзакций и таблицы, содержащие данные, поступающие из API.Второй тип в основном доступен только для чтения в «перспективе оперативной базы данных», и огромная часть таблиц массово обновляется каждый час (в пакетном режиме), чтобы отбросить старые данные и обновить значения.
Учитывая этот контекстЯ заметил, что Cloud Dataflow - это инструмент ETL, предоставляемый GCP.Однако, кажется, что этот инструмент больше подходит для приложений с большими данными, которые должны выполнять сложные преобразования и принимать данные в разных форматах.Кроме того, в потоке данных данные обрабатываются параллельно, а рабочие узлы расширяются по мере необходимости.Поскольку Dataflow является распределенной системой, возможно, у процесса ETL будут дополнительные издержки при распределении ресурсов для выполнения простой массовой загрузки.Кроме того, я заметил, что Dataflow не имеет определенного приемника для Cloud SQL.Это, вероятно, означает, что Dataflow не является правильным инструментом для простых операций массовой загрузки в базе данных Cloud SQL.
В моих текущих потребностях мне нужно только выполнять простые преобразования и массовую загрузку данных.Однако в будущем нам может потребоваться обработка других источников данных (pngs, json, csv files) и приемников (Cloud Storage и, возможно, BigQuery).Кроме того, в будущем мы можем захотеть принять потоковые данные и сохранить их в Cloud SQL.В этом смысле базовая модель Apache Beam действительно интересна, поскольку предлагает унифицированную модель для пакетной обработки и потоковой передачи.
Предоставляя весь этот контекст, я вижу два подхода:
1) Использованиеинструмент ETL, такой как Talend in the Cloud, для мониторинга заданий и обслуживания ETL.
2) Используйте Cloud Dataflow, поскольку нам могут понадобиться возможности потоковой передачи и интеграция со всеми видами источников и приемников.
Проблема с первым подходом заключается в том, что я могу в конечном итоге использовать Cloud Dataflow в любом случае, когда появятся будущие требования, и это будет плохо для моего проекта с точки зрения затрат на инфраструктуру, поскольку я буду платить за два инструмента.
Проблема второго подхода заключается в том, что Dataflow не подходит для простых операций массовой загрузки в облачной базе данных SQL.
Есть ли что-то, что я здесь ошибаюсь?Может ли кто-нибудь просветить меня?