نظرة عامة: يتيح ClickHouse JDBC Bridge، بالاقتران مع jdbc table function أو JDBC table engine، لـ ClickHouse الوصول إلى البيانات من أي مصدر بيانات خارجي يتوفر له برنامج تشغيل JDBC:

ويكون ذلك مفيدًا عندما لا يتوفر integration engine أصلي مدمج، أو table function، أو قاموس خارجي لمصدر البيانات الخارجي، بينما يتوفر برنامج تشغيل JDBC لهذا المصدر.
يمكنك استخدام ClickHouse JDBC Bridge لكلٍّ من القراءة والكتابة، وكذلك بالتوازي مع عدة مصادر بيانات خارجية. فعلى سبيل المثال، يمكنك تشغيل distributed queries على ClickHouse عبر عدة مصادر بيانات خارجية وداخلية في الوقت الفعلي.
في هذا الدرس، سنوضح لك مدى سهولة تثبيت ClickHouse JDBC Bridge وتهيئته وتشغيله لربط ClickHouse بمصدر بيانات خارجي. وسنستخدم MySQL بوصفه مصدر البيانات الخارجي في هذا الدرس.
لنبدأ!
ثبّت ClickHouse JDBC Bridge محليًا
أسهل طريقة لاستخدام ClickHouse JDBC Bridge هي تثبيته وتشغيله على نفس المضيف الذي يعمل عليه ClickHouse:

لنبدأ بالاتصال بـ Unix shell على الجهاز الذي يعمل عليه ClickHouse، ثم إنشاء مجلد محلي سنُثبّت فيه ClickHouse JDBC Bridge لاحقًا (يمكنك تسمية المجلد كما تشاء ووضعه في أي مكان تريده):
mkdir ~/clickhouse-jdbc-bridgeننزّل الآن النسخة الحالية من ClickHouse JDBC Bridge إلى ذلك المجلد:
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للاتصال بـ MySQL، ننشئ مصدر بيانات مُسمّى:
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.jsonيمكنك الآن نسخ إعدادات التكوين التالية ولصقها في الملف ~/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>"
}
}الآن أصبحنا جاهزين لبدء ClickHouse JDBC Bridge:
cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jarاستخدم اتصال JDBC من داخل ClickHouse
يمكن لـ ClickHouse الآن الوصول إلى بيانات MySQL إما باستخدام jdbc table function أو JDBC table engine.
أسهل طريقة لتنفيذ الأمثلة التالية هي نسخها ولصقها في clickhouse-client أو في واجهة المستخدم Play.
- jdbc table function:
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');- JDBC table engine:
CREATE TABLE mytable (
<column> <column_type>,
...
)
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;تثبيت ClickHouse JDBC Bridge خارجيًا
بالنسبة إلى عنقود ClickHouse موزّع (أي عنقود يضم أكثر من مضيف ClickHouse واحد)، فمن المنطقي تثبيت ClickHouse JDBC Bridge وتشغيله خارجيًا على مضيف مستقل:

وتتمثل ميزة ذلك في أن كل مضيف ClickHouse يمكنه الوصول إلى JDBC Bridge. بخلاف ذلك، سيلزم تثبيت JDBC Bridge محليًا على كل مثيل ClickHouse من المفترض أن يصل إلى مصادر بيانات خارجية عبر الـ Bridge.
لتثبيت ClickHouse JDBC Bridge خارجيًا، نتبع الخطوات التالية:
-
نثبّت ClickHouse JDBC Bridge ونُهيّئه ونشغّله على مضيف مخصص باتباع الخطوات الموضحة في القسم 1 من هذا الدليل.
-
على كل مضيف ClickHouse، نضيف كتلة الإعداد التالية إلى إعدادات خادم ClickHouse (بحسب تنسيق الإعداد الذي اخترته، استخدم إما إصدار XML أو YAML):
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019