Высокая производительность запросов — есть ли способ разделения по нескольким измерениям (дата и клиент)? Одна большая таблица против 400 таблиц

#google-bigquery #google-cloud-platform

#google-bigquery #google-облачная платформа

Вопрос:

Мы оцениваем варианты облачного хранилища для создания аналитического решения. Нам нужно предоставлять анализ тенденций в день на одного клиента для многих клиентов (400 ), соотношение запросов для этих двух измерений одинаково. Моя первоначальная мысль — создать таблицу с разделением на даты по одному для каждого клиента, поэтому для запросов на каждого клиента я ограничиваю сканирование одним конкретным днем, а для запросов по всем клиентам я использую функцию подстановочных знаков таблицы.

Вопросы:

  1. Есть ли способ разделения по дате и клиенту, чтобы я мог хранить все данные в одной таблице и при этом ограничивать объем сканирования данных?
  2. Если ответ на # 1 — нет, каково влияние на производительность запросов по 400 таблицам по сравнению с одной таблицей (тот же объем данных)

Ответ №1:

  1. Разделение хэша и разделение по определенным полям в таблице пока не поддерживаются, поэтому сейчас это невозможно.
  2. Если вы запрашиваете 400 таблиц с помощью подстановочных знаков и фильтруете клиентов с помощью _TABLESUFFIX , запрос будет считывать только соответствующие таблицы, и с вас будет взиматься плата только за эти таблицы; если вы запрашиваете одну таблицу, вы можете фильтровать даты с помощью _PARTITIONTIME, и с вас будет взиматься плата только за соответствующие разделы. С точки зрения производительности считывается меньше метаданных, если вы запрашиваете одну таблицу, но это не должно быть много для 400 таблиц.

Комментарии:

1. Спасибо, я заметил, что я не могу использовать _partitiontime и _tablesuffix в одном запросе в стандартном SQL для сканирования только необходимого раздела в соответствующих таблицах. однако я могу использовать TABLE_QUERY с фильтром table_id вместе с _partitiontime это помогает ограничить отсканированные данные, потому что я могу читать только необходимые разделы из соответствующих таблиц.