07 ClickHouseClickHouse数据库引擎解析( 二 )


使用例子MySQL操作:
mysql> USE test;Database changedmysql> 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')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 │└────────┴───────┘PostgreSQL允许连接到远程PostgreSQL服务 。支持读写操作(SELECT和INSERT查询),以在ClickHouse和PostgreSQL之间交换数据 。
在SHOW TABLES和DESCRIBE TABLE查询的帮助下,从远程PostgreSQL实时访问表列表和表结构 。
支持表结构修改(ALTER TABLE ... ADD|DROP COLUMN) 。如果use_table_cache参数(参见下面的引擎参数)设置为1,则会缓存表结构,不会检查是否被修改,但可以用DETACH和ATTACH查询进行更新 。
使用总体上与mysql引擎类似
创建数据库CREATE DATABASE test_databaseENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `use_table_cache`]);引擎参数

  • host:port — PostgreSQL服务地址
  • database — 远程数据库名次
  • user — PostgreSQL用户名称
  • password — PostgreSQL用户密码
  • schema - PostgreSQL 模式
  • use_table_cache — 定义数据库表结构是否已缓存或不进行 。可选的 。默认值: 0
数据类型对应PostgreSQLClickHouseDATEDateTIMESTAMPDateTimeREALFloat32DOUBLEFloat64DECIMALDecimalNUMERICDecimalSMALLINTInt16INTEGERInt32BIGINTInt64SERIALUInt32BIGSERIALUInt64TEXTStringCHARStringINTEGERNullable(Int32)ARRAYArraySQLite允许连接到SQLite数据库,并支持ClickHouse和SQLite交换数据,执行INSERT和SELECT查询 。
SQLite将整个数据库(定义、表、索引和数据本身)存储为主机上的单个跨平台文件 。在写入过程中,SQLite会锁定整个数据库文件,因此写入操作是顺序执行的 。读操作可以是多任务的 。SQLite不需要服务管理(如启动脚本)或基于GRANT和密码的访问控制 。访问控制是通过授予数据库文件本身的文件系统权限来处理的 。
创建数据库CREATE DATABASE sqlite_databaseENGINE = SQLite('db_path')引擎参数
  • db_path — SQLite 数据库文件的路径
数据类型对应SQLiteClickHouseINTEGERInt32REALFloat32TEXTStringBLOBStringLazy在最后一次访问之后,只在RAM中保存expiration_time_in_seconds秒 。只能用于Log表 。
它是为存储许多小的Log表而优化的,对于这些表,访问之间有很长的时间间隔 。
创建数据库CREATE DATABASE testlazy ENGINE = Lazy(expiration_time_in_seconds);Replicated该引擎基于Atomic引擎 。它支持通过将DDL日志写入ZooKeeper并在给定数据库的所有副本上执行的元数据复制 。
一个ClickHouse服务器可以同时运行和更新多个复制的数据库 。但是同一个复制的数据库不能有多个副本 。
这是一个实验性的引擎,不应该在生产中使用 。
创建数据库CREATE DATABASE testdb ENGINE = Replicated('zoo_path', 'shard_name', 'replica_name') [SETTINGS ...]

经验总结扩展阅读