При указании столбца TIMESTAMP
в качестве раздела - данные сохраняются на диске разделом, разрешающим доступ каждому.
Теперь BigQuery позволяет также определить до 4 столбцов, которые будут использоваться в качестве поля кластера.
Если я правильно понял, раздел выглядит как PK
, а поля кластера — как indexes
.
Значит, поля кластера никак не связаны с тем, как записи сохраняются на диске?
@TamirKlein это не так. В нем говорится о полях кластеризации независимо от поля раздела.
If I get it correctly the partition is like PK
Это неверно, раздел не используется для идентификации строки в таблице, а позволяет BigQuery хранить данные каждого раздела в другом сегменте, поэтому при сканировании таблицы по разделу вы ТОЛЬКО сканируете указанные разделы и, таким образом, снижаете стоимость сканирования.
cluster fields are like indexes
Это правильные поля кластера, которые используются в качестве указателей на записи в таблице и обеспечивают быстрый/минимальный доступ к данным независимо от раздела. Это означает, что с помощью полей кластера вы можете запросить кросс-раздел таблицы с минимальными затратами.
Мне нравится изображение @Felipe из его средний пост, которое дает хорошую визуализацию того, как хранятся данные.
Примечание. Разделение происходит во время вставки, а кластеризация выполняется как фоновое задание, выполняемое BigQuery.
См. этот отвечать, который дает хороший ответ на эту тему. Также очень хорош средний пост это от @Felipe.