Подходит ли BigQuery для частого обновления частичных данных? - PullRequest
0 голосов
/ 09 июля 2020

Я использую GCP, у меня есть случай использования, когда я хочу принимать потоки больших объемов событий с удаленных машин. Чтобы составить финальное событие - мне нужно принять и «объединить» событие типа X с событиями типов Y и Z.

схема X типа события: SrcPort ProcessID

тип события Y схема : DstPort ProcessID

тип события Z схема: ProcessID ProcessName

В настоящее время я использую Cloud SQL (PostgreSQL) для хранения большей части моих реляционных данных. Мне интересно, следует ли мне использовать BigQuery для этого варианта использования, поскольку я ожидаю большого количества событий такого рода, и у меня могут быть планы на будущее по анализу этих данных.

Я тоже интересно, как моделировать эти события. Меня волнует "JOIN" между этими событиями. Таким образом, событие "JOIN" ed будет: SrcPort, SrcProcessID, SrcProcessName, DstPort, DstProcessID, DstProcessName

Когда "последнее событие" завершится, я хочу опубликовать sh его в PubSub.

Я могу создать ненормализованную таблицу и просто обновить ее частично при событии (как обстоят дела в BigQuery с точки зрения производительности обновления?), а затем опубликовать sh в pubsub по завершении.

Или я могу сохранить их как необработанные события в отдельных «таблицах», а затем присоединяться к периодически завершенным событиям, а затем публиковать sh в pubsub.

Я не уверен, насколько хорош PostgreSQL с точки зрения хранения и обработки большого количества событий.

Что меня привлекло в BigQuery, так это удобство работы с большими объемами с легкостью.

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Если у вас это уже есть на Postgres, советую вам увидеть BigQuery как дополнительную систему для хранения дубликатов данных или целей анализа.

BigQuery предлагает вам различные способы снижения затрат и улучшения запросов производительность:

  1. прочтите о разбиении по часам и кластеризации, имея в виду, что вы «сканируете» только те разделы, которые вам интересны для выполнения «завершения события».
  2. вы можете используйте запланированные запросы для периодического выполнения операторов MERGE, чтобы получить материализованную таблицу (вы можете запланировать это так часто, как хотите)
  3. вы можете использовать материализованные представления для некоторых ситуаций
0 голосов
/ 09 июля 2020

BigQuery хорошо работает с массовым импортом и частыми вставками, такими как ведение журнала http. Вставка в bigquery сегментов ~ 100 или ~ 1000 строк каждые несколько секунд работает хорошо.

Ваша идея создания окончательного представления определенно поможет. Хранение данных в BigQuery дешевле, чем их обработка, поэтому не помешает сохранить необработанный набор данных.

Как вы моделируете или структурируете свои события, зависит от вас.

...