网站首页 > 博客文章 正文
数据库引擎介绍与实例演示
ClickHouse中支持在创建数据库时指定引擎,目前比较常用的两种引擎为默认引擎和MySQL数据库引擎。
一、Ordinary默认数据库引擎
Ordinary就是ClickHouse中默认引擎,如果不指定数据库引擎创建的就是Ordinary数据库引擎,在这种数据库下面可以使用任意表引擎。创建时需要注意,Ordinary首字母需要大写,不然会抛出异常。
- 示例:
#在ClickHouse中创建数据库test1,指定数据库引擎为Ordinary
node1 :) create database test1 engine = Ordinary;
CREATE DATABASE test1
ENGINE = Ordinary
Ok.
0 rows in set. Elapsed: 0.013 sec.
#查看test1数据库建库信息,显示数据库引擎为Ordinary
node1 :) show create database test1;
SHOW CREATE DATABASE test1
┌─statement──────────────────────────────┐
│ CREATE DATABASE test1 │
│ ENGINE = Ordinary │
└────────────────────────────────────────┘
1 rows in set. Elapsed: 0.002 sec.
#在ClickHouse中创建数据库test2,这里默认不指定任何数据库引擎
node1 :) create database test2;
CREATE DATABASE test2
Ok.
0 rows in set. Elapsed: 0.003 sec.
#查看test2数据库建库信息,显示数据库引擎为Ordinary
node1 :) show create database test2;
SHOW CREATE DATABASE test2
┌─statement─────────────────────────────┐
│ CREATE DATABASE test2 │
│ ENGINE = Ordinary │
└───────────────────────────────────────┘
1 rows in set. Elapsed: 0.002 sec.
二、MySQL数据库引擎
MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许对表进行INSERT插入和SELECT查询,方便在ClickHouse与MySQL之间进行数据交换。这里不会将MySQL的数据同步到ClickHouse中,ClickHouse就像一个壳子,可以将MySQL的表映射成ClickHouse表,使用ClickHouse查询MySQL中的数据,在MySQL中进行的CRUD操作,可以同时映射到ClickHouse中。
MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此可以执行诸如SHOW TABLES或SHOW CREATE TABLE之类的操作,但是不允许创建表、修改表、删除数据、重命名操作。
ClickHouse中创建库使用MySQL引擎语法如下:
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
以上参数解释:
- host:port — 链接的MySQL地址。
- database — 链接的MySQL数据库。
- user — 链接的MySQL用户。
- password — 链接的MySQL用户密码。
注意:“MySQL”引擎的写法严格区分大小写。
在ClickHouse中使用MySQL引擎建库,将MySQL库中数据映射到ClickHouse中,mysql库中表字段类型与ClickHouse表字段类型的映射如下,这里每种类型在ClickHouse中都支持Nullable,即可空。
Mysql | ClickHouse |
UNSIGNED TINYINT | UInt8 |
TINYINT | Int8 |
UNSIGNED SMALLINT | UInt16 |
SMALLINT | Int16 |
UNSIGNED INT UNSIGNED MEDIUMINT | UInt32 |
INT, MEDIUMINT | Int32 |
UNSIGNED BIGINT | UInt64 |
BIGINT | Int64 |
FLOAT | Float32 |
DOUBLE | Float64 |
DATE | Date |
DATETIME, TIMESTAMP | DateTime |
BINARY | FixedString |
注意:
- 在Mysql中UNSIGNED 表示无符号,就是没有负数。
- TINYINT代表有符号的范围是-128-127,无符号的范围是从0到255的整型数据,占位大小为1字节。
- SMALLINT:一个小整数。有符号的范围是-2^15(-32,768) 到 2^15-1(32,767)的整型数据,无符号的范围是0到65535,占位大小为2个字节。
- MEDIUMINT:一个中等大小整数,有符号的范围是-8388608到8388607,无符号的范围是0到16777215,占位大小为3个字节。
- INT:一个正常大小整数。有符号的范围是-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据(所有数字),无符号的范围是0到4294967295,占位大小为 4 个字节。
示例:ClickHouse映射MySQL中的表
#登录mysql 在mysql中创建test数据库
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
#在mysql test库中新建表 mysql_table
mysql> use test;
mysql> create table mysql_table(id int ,name varchar(255));
#向mysql表 mysql_table中插入两条数据
mysql> insert into mysql_table values (1,"zs"),(2,"ls");
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
#在ClickHouse中创建mysql引擎的数据库,与MySQL交换数据
node1 :) CREATE DATABASE mysql_db ENGINE = MySQL('node2:3306', 'test', 'root', '123456');
CREATE DATABASE mysql_db
ENGINE = MySQL('node2:3306', 'test', 'root', '123456')
Ok.
0 rows in set. Elapsed: 0.032 sec.
#在ClickHouse中使用mysql_db库,并展示表,看是否映射MySQL中的表
node1 :) use mysql_db;
node1 :) show tables;
SHOW TABLES
┌─name────────┐
│ mysql_table │
└─────────────┘
1 rows in set. Elapsed: 0.005 sec.
#在ClickHouse中查询表mysql_table
node1 :) select * from mysql_table;
SELECT *
FROM mysql_table
┌─id─┬─name─┐
│ 1 │ zs │
│ 2 │ ls │
└────┴──────┘
2 rows in set. Elapsed: 0.012 sec.
#在ClickHouse中查看表 mysql_table的描述,发现映射成ClickHouse中的字段类型。
node1 :) desc mysql_table;
DESCRIBE TABLE mysql_table
┌─name─┬─type────────────┬
│ id │ Nullable(Int32) │
│ name │ Nullable(String)│
└──────┴─────────────────┴
2 rows in set. Elapsed: 0.005 sec.
示例:在MySQL对应的表中插入删除数据,对应的在ClickHouse中也能插入和删除的数据
#在MySQL中 test库下的mysql_table中插入和删除一条数据
mysql> insert into mysql_table values (3,"ww");
Query OK, 1 row affected (0.01 sec)
mysql> delete from mysql_table where id = 1;
Query OK, 1 row affected (0.01 sec)
#在ClickHouse中 mysql_db库下查询表mysql_table
node1 :) select * from mysql_table;
SELECT *
FROM mysql_table
┌─id─┬─name─┐
│ 2 │ ls │
│ 3 │ ww │
└────┴──────┘
2 rows in set. Elapsed: 0.005 sec.
示例:在MySQL对应的库test下创建新的表a,ClickHouse中也可以展示
#在MySQL中 test库下创建库a,并插入数据
mysql> create table a (id int,name varchar(255),age int);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into a values (1,"zhangsan",18),(2,"lisi",19);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
#在ClickHouse中 mysql_db库下查询表a是否存在,同时查看数据
node1 :) show tables;
SHOW TABLES
┌─name────────┐
│ a │
│ mysql_table │
└─────────────┘
2 rows in set. Elapsed: 0.005 sec.
node1 :) select * from a;
SELECT *
FROM a
┌─id─┬─name─────┬─age─┐
│ 1 │ zhangsan │ 18 │
│ 2 │ lisi │ 19 │
└────┴──────────┴─────┘
2 rows in set. Elapsed: 0.025 sec.
示例:在ClickHouse中向表a中插入数据,可以在msyql中查询到。但是ClickHouse中不支持创建表和删除数据操作。
#在ClickHouse中向表a中插入数据
node1 :) insert into a values(3,'wangwu',20);
#在MySQL中查询表a数据
mysql> select * from a;
+------+----------+------+
| id | name | age |
+------+----------+------+
| 1 | zhangsan | 18 |
| 2 | lisi | 19 |
| 3 | wangwu | 20 |
+------+----------+------+
3 rows in set (0.00 sec)
猜你喜欢
- 2024-10-23 大数据ClickHouse进阶(二十二):ClickHouse优化
- 2024-10-23 大数据ClickHouse进阶(二十六):ClickHouse数据备份
- 2024-10-23 Clickhouse入门(clickhouse深度揭秘)
- 2024-10-23 clickhouse的简单优化(clickhouse uuid)
- 2024-10-23 聊聊clickhouse分布式表的操作(clickhouse 分布表)
- 2024-10-23 1、ClickHouse介绍(clickhouse作用)
- 2024-10-23 ClickHouse简记(clickhouse parts)
- 2024-10-23 Clickhouse数据复制的原理与实践(clickhouse数据导出)
- 2024-10-23 ClickHouse学习笔记四ClickHouse基础语法
- 2024-10-23 大数据ClickHouse(十六):ClickHouse SQL语法之DML 操作
你 发表评论:
欢迎- 最近发表
-
- 比GoPro 13更强的大疆Action 5 Pro,到底强在哪里?
- 信号和槽(信号和槽的实现原理)
- 在响应式项目中连接设计与开发(请简述实现响应式设计包括哪些技术点)
- 【C#】委托、Action、Func 和 Event 之间的关系
- 如何使用JavaScript实现Prompt弹窗?
- 谷歌Magic Actions功能曝光:AI革新安卓16通知交互
- 基于目标TPS的性能测试,如何通过手动设置场景进行测试?
- IOS基础学习之输出口和动作(io口输入输出实验总结及体会)
- 《Java语言程序设计》期末考试模拟试题——判断题和问答题
- Android学习之Touch事件的处理(android触摸事件实例)
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)