ETL подходит для массовой загрузки данных в Cloud SQL - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно вставить данные 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.

Есть ли что-то, что я здесь ошибаюсь?Может ли кто-нибудь просветить меня?

1 Ответ

0 голосов
/ 02 ноября 2018

Облачный поток данных можно использовать только для операций загрузки.Вот учебник о том, как выполнять операции ETL с потоком данных .Он использует BigQuery, но вы можете адаптировать его для подключения к облаку SQL или другим JDBC-источникам .

Дополнительные примеры можно найти на официальной странице github Google Cloud Platform для анализа потоков данных пользовательского контента.

Вы также можете посмотреть на это Пример архитектуры GCP ETL , который автоматизирует задачи извлечения данных из операционных баз данных.

Для более простых операций ETL, Dataprep - это простой в использовании инструмент, который также обеспечивает планирование потоков .

...