Я использую 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, так это удобство работы с большими объемами с легкостью.