Visão geral: O ClickHouse JDBC Bridge, em combinação com a função de tabela JDBC ou o engine de tabela JDBC, permite que o ClickHouse acesse dados de qualquer fonte de dados externa para a qual haja um driver JDBC disponível:

Isso é útil quando não há um integration engine, uma função de tabela ou um dicionário externo nativo disponível para a fonte de dados externa, mas existe um driver JDBC para essa fonte de dados.
Você pode usar o ClickHouse JDBC Bridge tanto para leituras quanto para gravações, inclusive em paralelo para várias fontes de dados externas. Por exemplo, é possível executar consultas distribuídas no ClickHouse em tempo real em várias fontes de dados externas e internas.
Nesta lição, vamos mostrar como é fácil instalar, configurar e executar o ClickHouse JDBC Bridge para conectar o ClickHouse a uma fonte de dados externa. Usaremos o MySQL como fonte de dados externa nesta lição.
Vamos começar!
Instale o ClickHouse JDBC Bridge localmente
A forma mais fácil de usar o ClickHouse JDBC Bridge é instalá-lo e executá-lo no mesmo host em que o ClickHouse também está sendo executado:

Vamos começar nos conectando ao shell Unix da máquina em que o ClickHouse está em execução e criando uma pasta local onde instalaremos o ClickHouse JDBC Bridge mais adiante (fique à vontade para dar à pasta o nome que quiser e colocá-la onde preferir):
mkdir ~/clickhouse-jdbc-bridgeAgora, baixe a versão atual do ClickHouse JDBC Bridge para essa pasta:
cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jarPara poder se conectar ao MySQL, vamos criar uma fonte de dados nomeada:
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.jsonAgora você pode copiar e colar a configuração a seguir no arquivo ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json:
{
"mysql8": {
"driverUrls": [
"https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar"
],
"jdbcUrl": "jdbc:mysql://<host>:<port>",
"username": "<username>",
"password": "<password>"
}
}Agora estamos prontos para iniciar o ClickHouse JDBC Bridge:
cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jarUse a conexão JDBC a partir do ClickHouse
Agora o ClickHouse pode acessar dados do MySQL usando a função de tabela JDBC ou o engine de tabela JDBC.
A maneira mais fácil de executar os exemplos a seguir é copiá-los e colá-los no clickhouse-client ou na Play UI.
- função de tabela JDBC:
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');- Engine de tabela JDBC:
CREATE TABLE mytable (
<column> <column_type>,
...
)
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;Instalar o ClickHouse JDBC Bridge externamente
Para um cluster distribuído do ClickHouse (um cluster com mais de um host do ClickHouse), faz sentido instalar e executar o ClickHouse JDBC Bridge externamente, em um host próprio:

Isso traz a vantagem de permitir que cada host do ClickHouse acesse o JDBC Bridge. Caso contrário, o JDBC Bridge precisaria ser instalado localmente em cada instância do ClickHouse que deve acessar fontes de dados externas por meio do Bridge.
Para instalar o ClickHouse JDBC Bridge externamente, siga estas etapas:
-
Instale, configure e execute o ClickHouse JDBC Bridge em um host dedicado, seguindo as etapas descritas na seção 1 deste guia.
-
Em cada host do ClickHouse, adicione o seguinte bloco de configuração à configuração do servidor ClickHouse (dependendo do formato de configuração escolhido, use a versão em XML ou YAML):
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019