Организация ресурсов
Организации
Проекты BigQuery и сервисы ClickHouse Cloud
- Группу вычислительных узлов (сейчас это 2 узла для сервиса уровня Development и 3 — для сервиса уровня Production). Для этих узлов ClickHouse Cloud поддерживает вертикальное и горизонтальное масштабирование как вручную, так и автоматически.
- Папку в Объектном хранилище, где сервис хранит все данные.
- Конечную точку (или несколько конечных точек, созданных через консоль ClickHouse Cloud) — URL сервиса, который используется для подключения к нему (например,
https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443)
Датасеты BigQuery и базы данных ClickHouse Cloud
Папки BigQuery
Резервирование Slot и квоты BigQuery
Разрешения
Типы данных
INT64, NUMERIC, BIGNUMERIC and FLOAT64. В ClickHouse, в отличие от BigQuery, есть несколько вариантов точности для десятичных чисел, чисел с плавающей точкой и целых чисел. Эти типы данных позволяют оптимизировать хранение и расход памяти, что ускоряет выполнение запросов и снижает потребление ресурсов. Ниже приведено соответствие типов BigQuery и их эквивалентов в ClickHouse:
Методы ускорения запросов
В BigQuery таблица может иметь ограничения первичного и внешних ключей. Обычно первичные и внешние ключи используются в реляционных базах данных для обеспечения целостности данных. Значение первичного ключа обычно уникально для каждой строки и не равно
NULL. Каждое значение внешнего ключа в строке должно присутствовать в столбце первичного ключа таблицы, на которую ссылается внешний ключ, либо быть NULL. В BigQuery эти ограничения не проверяются, однако оптимизатор запросов может использовать эту информацию для более эффективной оптимизации запросов.
В ClickHouse таблица также может иметь первичный ключ. Как и BigQuery, ClickHouse не обеспечивает уникальность значений в столбце первичного ключа таблицы. В отличие от BigQuery, данные таблицы хранятся на диске упорядоченными по столбцам первичного ключа. Оптимизатор запросов использует этот порядок сортировки, чтобы избежать повторной сортировки, минимизировать использование памяти для JOIN и обеспечивать досрочное завершение для секций LIMIT. В отличие от BigQuery, ClickHouse автоматически создает первичный (разреженный) индекс на основе значений столбцов первичного ключа. Этот индекс используется для ускорения всех запросов, содержащих фильтры по столбцам первичного ключа. В настоящее время ClickHouse не поддерживает ограничения внешних ключей.
Вторичные индексы (доступны только в ClickHouse)
- Индекс Bloom Filter:
- Используется для ускорения запросов с условиями равенства (например, =, IN).
- Использует вероятностные структуры данных, чтобы определять, содержится ли значение в блоке данных.
- Индекс Token Bloom Filter:
- Аналогичен индексу Bloom Filter, но используется для токенизированных строк и подходит для запросов полнотекстового поиска.
- Индекс Min-Max:
- Хранит минимальное и максимальное значения столбца для каждой части данных.
- Помогает пропускать чтение частей данных, которые не попадают в указанный диапазон.
Поисковые индексы
Векторные индексы
Партиционирование
Кластеризация
materialized views
Запросы к materialized view
Транзакции
Агрегатные функции
- BigQuery включает 18 агрегатных функций и 4 приближённые агрегатные функции.
- В ClickHouse доступно более 150 готовых агрегатных функций, а также мощные комбинаторы агрегации, позволяющие расширять поведение готовых агрегатных функций. Например, любую из этих 150+ готовых агрегатных функций можно применять к массивам вместо строк таблицы, просто добавив суффикс -Array. С суффиксом -Map любую агрегатную функцию можно применять к данным типа Map. А с суффиксом -ForEach любую агрегатную функцию можно применять к вложенным массивам.
Источники данных и форматы файлов
- ClickHouse имеет встроенную поддержку загрузки данных более чем в 90 форматах файлов практически из любого источника данных
- BigQuery поддерживает 5 форматов файлов и 19 источников данных
Возможности языка SQL
Массивы
groupArray для (временного) преобразования значений из определённых строк таблицы в массив. Затем этот массив можно удобно обработать с помощью функций для работы с массивами, а результат — преобразовать обратно в отдельные строки таблицы с помощью функции arrayJoin.
Поскольку ClickHouse SQL поддерживает лямбда-функции высшего порядка, многие сложные операции с массивами можно выполнять простым вызовом одной из встроенных функций высшего порядка для работы с массивами, вместо того чтобы временно преобразовывать массивы обратно в таблицы, как это часто требуется в BigQuery, например для фильтрации или объединения в пары массивов. В ClickHouse эти операции сводятся к простому вызову функций высшего порядка arrayFilter и arrayZip соответственно.
Ниже приведено соответствие операций с массивами в BigQuery и ClickHouse:
Создать массив с одним элементом на каждую строку в подзапросе
BigQuery
Функция ARRAY
UNNEST
UNNEST
UNNEST
UNNEST