Protobuf
Вход | Выход | Псевдоним |
---|---|---|
✔ | ✔ |
Описание
Формат Protobuf
- это формат Protocol Buffers.
Этот формат требует внешнюю схему формата, которая кэшируется между запросами.
ClickHouse поддерживает:
- синтаксисы
proto2
иproto3
. - поля
Repeated
/optional
/required
.
Примеры использования
Основные примеры
Примеры использования:
Где файл schemafile.proto
выглядит следующим образом:
Чтобы найти соответствие между колонками таблицы и полями типа сообщения Protocol Buffers, ClickHouse сравнивает их названия.
Это сравнение нечувствительно к регистру, и символы _
(подчеркивание) и .
(точка) считаются равными.
Если типы колонки и поля сообщения Protocol Buffers различаются, применяется необходимое преобразование.
Поддерживаются вложенные сообщения. Например, для поля z
в следующем типе сообщения:
ClickHouse пытается найти колонку с именем x.y.z
(или x_y_z
или X.y_Z
и так далее).
Вложенные сообщения подходят для ввода или вывода вложенных структур данных.
Значения по умолчанию, определенные в схеме protobuf, как в следующем примере, не применяются; вместо этого используются значения по умолчанию таблицы:
ClickHouse вводит и выводит сообщения protobuf в формате length-delimited
.
Это означает, что перед каждым сообщением его длина должна быть записана как целое число переменной длины (varint).
Смотрите также: как читать/писать сообщения protobuf с разделителями длины на популярных языках.
Использование автоматически сгенерированной схемы
Если у вас нет внешней схемы Protobuf для ваших данных, вы все равно можете вводить/выводить данные в формате Protobuf, используя автоматически сгенерированную схему.
Например:
В этом случае ClickHouse будет автоматически генерировать схему Protobuf в соответствии с структурой таблицы, используя функцию structureToProtobufSchema
.
Затем он будет использовать эту схему для сериализации данных в формате Protobuf.
Вы также можете прочитать файл Protobuf с автоматически сгенерированной схемой. В этом случае необходимо, чтобы файл был создан с использованием той же схемы:
Настройка format_protobuf_use_autogenerated_schema
включена по умолчанию и применяется, если format_schema
не задана.
Вы также можете сохранить автоматически сгенерированную схему в файл во время ввода/вывода, используя настройку output_format_schema
. Например:
В этом случае автоматически сгенерированная схема Protobuf будет сохранена в файл path/to/schema/schema.capnp
.
Сброс кэша Protobuf
Чтобы перезагрузить схему Protobuf, загруженную из format_schema_path
, используйте оператор SYSTEM DROP ... FORMAT CACHE
.