Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Conectar o ClickHouse a fontes de dados externas com JDBC

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:

Diagrama da arquitetura do ClickHouse JDBC Bridge

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:

Diagrama de implantação local do ClickHouse JDBC Bridge

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-bridge

Agora, 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.jar

Para poder se conectar ao MySQL, vamos criar uma fonte de dados nomeada:

 cd ~/clickhouse-jdbc-bridge
 mkdir -p config/datasources
 touch config/datasources/mysql8.json

Agora 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.jar

Use 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:

Diagrama de implantação externa do ClickHouse JDBC Bridge

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:

  1. Instale, configure e execute o ClickHouse JDBC Bridge em um host dedicado, seguindo as etapas descritas na seção 1 deste guia.

  2. 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>
Navigation