Облако SQL в BigQuery постепенно - PullRequest
2 голосов
/ 28 января 2020

Мне нужны некоторые предложения для одного из вариантов использования, над которым я работаю.

Вариант использования:

У нас есть данные в облаке SQL около 5- 10 таблиц, некоторые обрабатываются как поисковые, а другие транзакционные. Нам нужно передать это в BigQuery таким образом, чтобы из них было сделано 3-4 таблицы (Flattered, Nested или Denormalized), которые будут использоваться для создания отчетов в Data Studio, Looker, et c.

Data. должны обрабатываться постепенно, и изменения в облаке SQL могут происходить каждые 5 минут, что означает, что данные должны быть доступны для отчетов BigQuery практически в реальном времени. Если возможно, мы также должны поддерживать историю изменения данных.

Решение:

Мы сохранили 3 слоя в BigQuery, поэтому данные из Cloud SQL приходят к первому слой, затем после выравнивания мы сохраняем его на втором слое (который поддерживает историю), а затем обрабатываем его для вставки в третий слой (Отчетность). Проблема при таком подходе заключается в том, что он был разработан для ежедневной обработки и не может помочь при обработке каждые 5 минут изменения данных в облаке SQL.

Любой предложение приветствуется.

Примечание: - Нам потребуется использовать поток данных, виртуальную машину или какой-либо другой способ обработки логики c, что означает, что мы не можем использовать только запланированный запрос, так как мы не может использовать запрос для обработки всех логи c, но да может использоваться сочетание вида и кода.

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Это проще, чем вы думаете: BigQuery может читать данные прямо из вашего облака SQL.

Документы:

Подробнее:

Так что все, что вам нужно сделать, это написать MySQL запрос, который находит все изменения за последние 5 минут. Вы можете выполнить этот запрос из BigQuery - и материализовать все данные в BigQuery одним запросом, например:

INSERT INTO `dataset.table`

SELECT * 
FROM EXTERNAL_QUERY(
  'your.CloudSql.database'
  , 'SELECT * FROM users')
0 голосов
/ 30 января 2020

Это интересный вариант использования! Если внешние запросы BQ вам не мешают, мы недавно создали решение для синхронизации таблиц c из MySQL с таблицами из BigQuery.

Решение работает с использованием двух компонентов:

  1. Соединитель, разработанный с Debezium для публикации sh, изменяется с MySQL на PubSub
  2. Конвейер потока данных, который использует эти изменения из PubSub и переносит их в BigQuery

Обратитесь к этому README, чтобы выяснить, как его развернуть: https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/master/v2/cdc-parent/

Дайте мне знать, если это полезно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...