Github   Telegram
No Matches
Public Member Functions | Static Public Member Functions | List of all members
components::ClickHouse Class Reference

ClickHouse client component. More...

#include <userver/storages/clickhouse/component.hpp>

+ Inheritance diagram for components::ClickHouse:
+ Collaboration diagram for components::ClickHouse:

Public Member Functions

 ClickHouse (const ComponentConfig &, const ComponentContext &)
 Component constructor.
 ~ClickHouse () override
 Component destructor.
std::shared_ptr< storages::clickhouse::ClusterGetCluster () const
 Cluster accessor.
- Public Member Functions inherited from components::LoggableComponentBase
 LoggableComponentBase (const ComponentConfig &, const ComponentContext &)
 LoggableComponentBase (LoggableComponentBase &&)=delete
 LoggableComponentBase (const LoggableComponentBase &)=delete
 ~LoggableComponentBase () override=default
ComponentHealth GetComponentHealth () const override
void OnLoadingCancelled () override
void OnAllComponentsLoaded () override
void OnAllComponentsAreStopping () override

Static Public Member Functions

static yaml_config::Schema GetStaticConfigSchema ()
- Static Public Member Functions inherited from components::LoggableComponentBase
static yaml_config::Schema GetStaticConfigSchema ()

Detailed Description

ClickHouse client component.

Provides access to a ClickHouse cluster.

Static configuration example:

# yaml
secdist_alias: clickhouse-database-alias
initial_pool_size: 5
max_pool_size: 10
queue_timeout: 1s
use_secure_connection: false
compression: lz4

If the component is configured with an secdist_alias, it will lookup connection data in secdist.json via secdist_alias value, otherwise via components name.

Secdist format

A ClickHouse alias in secdist is described as a JSON object clickhouse_settings, containing descriptions of databases.

import json
import pytest
from testsuite.databases.clickhouse import discover
pytest_plugins = ['pytest_userver.plugins.clickhouse']
def service_env(clickhouse_conn_info) -> dict:
'clickhouse_settings': {
'clickhouse-database-alias': {
'hosts': [],
'port': clickhouse_conn_info.tcp_port,
'password': '',
'user': 'default',
'dbname': 'clickhouse-database',
return {'SECDIST_CONFIG': json.dumps(SECDIST_CONFIG)}
def clickhouse_local(service_source_dir):
return discover.find_schemas(
schema_dirs=[service_source_dir.joinpath('schemas', 'clickhouse')],

Static options:

Name Description Default value
secdist_alias name of the key in secdist config components name
initial_pool_size number of connections created initially 5
max_pool_size maximum number of created connections 10
queue_timeout client waiting for a free connection time limit 1s
use_secure_connection whether to use TLS for connections true
compression compression method to use (none / lz4) none

Definition at line 57 of file component.hpp.

The documentation for this class was generated from the following file: