Когда использовать Google Bigquery в потоке данных Google - PullRequest
0 голосов
/ 05 декабря 2018

После нескольких дней тестирования и разработки некоторых шаблонов Google Dataflow с python я задаюсь вопросом, подходит ли использование BigQuery для нашего проекта.


Почему возникли эти мысли?


  • BigQuery ориентирован на онлайн-аналитическую обработку (OLAP), поэтому рассматривайте BigQuery как онлайн-обработку транзакций (OLTP), это может быть не лучшим вариантом.

    Даже зная это, я решил использовать BQ, потому что он лучше совместим с Google Dataflow.


  • После разработки первой версии шаблона потока данных Pythonи попробуйте с несколькими данными, это работает хорошо.При использовании потокового или пакетного выполнения этого конвейера у меня нет особых проблем.

    Проблемы начинаются, когда я пытаюсь использовать BQ как OLTP.Вот где я обнаружил некоторые проблемы из-за моего варианта использования: В некоторых случаях я не могу использовать массовые обновления, и мне приходится использовать мутации в одной строке, поэтому я должен использовать предложения DML для выполнения этой задачи.В результате время выполнения начинает значительно увеличиваться с сотнями мутаций из одной строки.


  • Даже если я предполагаю это увеличение времени, я обнаружил, что в BQВы можете использовать только 1000 обновлений на таблицу в день.(Подробнее цитаты )


Альтернативы

Здесь я не уверен, какие другие услугия должен использовать вместо BigQuery:

  • Облако SQL - это база данных OLTP Google.Это может быть подходящим для моего варианта использования, но: будет ли Cloud SQL работать так же быстро, как BQ, если я попытаюсь проанализировать данные?У меня будет много таблиц с миллионами строк, и, например, для меня недостаточно работы с Microsoft Server Sql Server из-за большого времени обработки.

  • Как Cloud SQL работает с Apache Beamи конвейеры?

  • Работает с Cloud SQL и переносит данные в BigQuery каждый день, чтобы избежать мутаций в одной строке в BQ?

  • Какая служба можетлучше всего использовать в этом случае?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Я бы не использовал BigQuery для транзакционных рабочих нагрузок, поскольку он, как правило, очень неэффективен для операций обновления.Точно так же Cloud SQL будет хорош для транзакционных рабочих нагрузок, но медленный для аналитических.

Если вам нужна база данных, которая может обрабатывать обновления и аналитическую нагрузку, я бы посоветовал изучить BigTable ,Вы можете прочитать о том, как выбрать опцию хранения для GCP здесь .

Другим вариантом, как вы сказали, будет выполнение всей вашей транзакционной работы в Cloud SQL и синхронизация ее раз в сутки с BigQuery и выполнение там аналитической работы, например, WePay использует рабочий процесс , напримерчто .

Чтобы ответить на другой вопрос, да, Dataflow может работать с Cloud SQL без каких-либо проблем, просто при обычном подключении , просто убедитесь, что используется пул соединений чтобы не кончались соединения.

0 голосов
/ 07 декабря 2018

Как Cloud SQL работает с Apache Beam и конвейерами?

O / p финального преобразования будет коллекцией, а не строкой. Запись коллекции в cloudsql может привести к перегрузкам и большой задержке.Вы можете написать, используя MySqlDb.connect в функции #pardo, где вы обрабатываете один элемент [TableRow] [Не очень хорошая практика].

Работает с Cloud SQL и каждый день переносит данные в BigQuery, чтобы избежать мутаций в одной строкеBQ?

Вы можете написать скрипт на python, который экспортирует данные из таблицы cloudsql в GCS или LocalStorage [там, где запланирован запуск вашего скрипта], а затем загружать обратно в BQ.

Но вы должны убедиться в значениях NULL.Когда вы экспортируете данные в виде файла, пустые значения в таблице будут заменены на ['N], что приведет к неправильному количеству значений строк при загрузке в BQ.Все это можно сделать с помощью одного скрипта Python.

Какой сервис лучше всего использовать в этом случае?enter image description here

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