الانتقال إلى المحتوى الرئيسي

محرك قاعدة بيانات MySQL

يتيح الاتصال بقواعد البيانات على خادم MySQL بعيد وتنفيذ استعلامات INSERT وSELECT لتبادل البيانات بين ClickHouse وMySQL. يترجم محرك قاعدة البيانات MySQL الاستعلامات إلى خادم MySQL، مما يتيح لك تنفيذ عمليات مثل SHOW TABLES أو SHOW CREATE TABLE. لا يمكنك تنفيذ الاستعلامات التالية:
  • RENAME
  • CREATE TABLE
  • ALTER

إنشاء قاعدة بيانات

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
[SETTINGS enable_compression=0]
معلمات المحرك
  • host:port — عنوان خادم MySQL.
  • database — اسم قاعدة البيانات على الخادم البعيد.
  • user — مستخدم MySQL.
  • password — كلمة مرور المستخدم.
الإعدادات

enable_compression

يُفعّل ضغط zlib لاتصال بروتوكول MySQL. عند ضبطه على 1، يطلب ClickHouse ضغطًا على مستوى البروتوكول من خادم MySQL. القيمة الافتراضية: 0. مثال:
CREATE DATABASE mysql_db
ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password')
SETTINGS enable_compression = 1;

دعم أنواع البيانات

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString
تُحوَّل جميع أنواع بيانات MySQL الأخرى إلى النوع String. النوع Nullable مدعوم.

دعم المتغيرات العامة

لتحقيق توافق أفضل، يمكنك الإشارة إلى المتغيرات العامة بأسلوب MySQL، بالشكل @@identifier. المتغيرات التالية مدعومة:
  • version
  • max_allowed_packet
حتى الآن، هذه المتغيرات مجرد عناصر وهمية ولا تقابل أي شيء فعليًا.
مثال:
SELECT @@version;

أمثلة الاستخدام

جدول في MySQL:
mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)
قاعدة بيانات في ClickHouse تتبادل البيانات مع خادم MySQL:
CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
SHOW DATABASES
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
SHOW TABLES FROM mysql_db
┌─name─────────┐
│  mysql_table │
└──────────────┘
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
INSERT INTO mysql_db.mysql_table VALUES (3,4)
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
آخر تعديل في ٢٩ يونيو ٢٠٢٦