Vue d’ensemble : ClickHouse JDBC Bridge, combiné à la fonction de table jdbc ou au moteur de table JDBC, permet à ClickHouse d’accéder aux données de toute source de données externe pour laquelle un pilote JDBC est disponible :

C’est pratique lorsqu’il n’existe ni integration engine, ni table function native intégrée, ni dictionnaire externe pour la source de données externe, mais qu’un pilote JDBC est disponible pour cette source.
Vous pouvez utiliser ClickHouse JDBC Bridge à la fois pour les lectures et les écritures. Il peut également être utilisé en parallèle avec plusieurs sources de données externes ; par exemple, vous pouvez exécuter des distributed queries sur ClickHouse sur plusieurs sources de données externes et internes en temps réel.
Dans cette leçon, nous allons vous montrer à quel point il est facile d’installer, de configurer et d’exécuter ClickHouse JDBC Bridge afin de connecter ClickHouse à une source de données externe. Nous utiliserons MySQL comme source de données externe pour cette leçon.
C’est parti !
Installer ClickHouse JDBC Bridge localement
Le moyen le plus simple d’utiliser ClickHouse JDBC Bridge est de l’installer et de l’exécuter sur le même hôte que celui sur lequel ClickHouse s’exécute :

Commençons par nous connecter au shell Unix de la machine sur laquelle ClickHouse s’exécute, puis par créer un dossier local dans lequel nous installerons plus tard ClickHouse JDBC Bridge (n’hésitez pas à donner à ce dossier le nom de votre choix et à le placer où vous voulez) :
mkdir ~/clickhouse-jdbc-bridgeTéléchargez maintenant la version actuelle du ClickHouse JDBC Bridge dans ce dossier :
cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jarPour pouvoir se connecter à MySQL, nous créons une source de données nommée :
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.jsonVous pouvez maintenant copier-coller la configuration suivante dans le fichier ~/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>"
}
}Nous sommes maintenant prêts à démarrer le ClickHouse JDBC Bridge :
cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jarUtiliser la connexion JDBC depuis ClickHouse
ClickHouse peut désormais accéder aux données MySQL soit via la fonction de table jdbc, soit via le moteur de table JDBC.
Le moyen le plus simple d'exécuter les exemples suivants est de les copier-coller dans le clickhouse-client ou dans l'interface Play.
- Fonction de table jdbc :
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');- Moteur de table JDBC :
CREATE TABLE mytable (
<column> <column_type>,
...
)
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;Installer ClickHouse JDBC Bridge à l’extérieur
Pour un cluster ClickHouse distribué (c’est-à-dire un cluster comportant plus d’un hôte ClickHouse), il est pertinent d’installer et d’exécuter ClickHouse JDBC Bridge à l’extérieur, sur un hôte dédié :

L’avantage est que chaque hôte ClickHouse peut accéder à JDBC Bridge. Sinon, JDBC Bridge devrait être installé localement sur chaque instance ClickHouse censée accéder à des sources de données externes via le Bridge.
Pour installer ClickHouse JDBC Bridge à l’extérieur, procédez comme suit :
-
Installez, configurez et exécutez ClickHouse JDBC Bridge sur un hôte dédié en suivant les étapes décrites dans la section 1 de ce guide.
-
Sur chaque hôte ClickHouse, ajoutez le bloc de configuration suivant à la configuration du serveur ClickHouse (selon le format de configuration choisi, utilisez la version XML ou YAML) :
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019