建库:

SQL: CREATE DATABASE DB_NAME ;

eg:   CREATE DATABASE message;

说明: CH支持Ordinary, Dictionary, Memory,Lazy, MySQL 等引擎,一般不需要明确执行,默认即可;

 

表引擎:

CH支持多种表引擎,最常用的是MergeTree

 

常用的表引擎是MergeTree, 并且只有MergeTree才支持主键索引、数据分区、数据副本、ALTER操作等;

建表:

语法: 

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = MergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]

[TTL expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]
 

说明: 

ON CLUSTER cluster : 分片集群,添加ON CLUSTER会将命令下发到每个分片,不需要逐个登陆执行;

TYPE: 字段类型,参考: ClickHouse数据类型

DEFAULT:   不写表示 DEFAULT ''

COMMENT:  推荐每个字段和表都添加COMMENT, 时间长了连自己都忘记字段是什么含义了; 

ENGINE : 参考表引擎,没有特殊需求就用ReplicatedMergeTree;

PARTITION BY: 指定分区键

ORDER BY: 指定排序规则,默认情况下如果不写PRIMARY KEY, 那么ORDER BY后面跟的即主键; 

PRIMARY KEY: 主键, 数据会按照主键进行一级索引; CH的主键可以重复;

TTL:  过期时间,设置后可以根据该时间字段自动删除历史数据;

SAMPLE : 采样数据

举例:

CREATE TABLE wang.core_msg_local ON ON CLUSTER cluster2
(
`Type` String COMMENT '数据类型',
`Subtype` String COMMENT '子类',
`Successflag` String COMMENT '0-失败;2-成功',
`Client` String COMMENT 'andriod/IOS',
`Version` String COMMENT '版本信息',
`Macid` String COMMENT 'macid',
`Ip` String COMMENT 'IPV6地址',
`Pin` String COMMENT 'PIN',
`Time` String COMMENT '时间',
`Origindata` String COMMENT 'Origindata',
`Succflag` String COMMENT 'T/F',
`LowerCaseClient` String COMMENT '客户端类型:小写',
`FormatTime` String COMMENT '时间',
`OccurTime` String COMMENT '发生时间',
`IndexTime` String COMMENT '检索时间',
`IpType` String COMMENT 'IPV4/IPV6',
`Code` Int64 COMMENT 'CODE信息',
`Message` String COMMENT 'message',
`Region` String COMMENT '区域信息',
`Province` String COMMENT '省份',
`City` String COMMENT '城市名字',
`District` String COMMENT '区',
`Provinceid` String COMMENT '省会编号',
`Cityid` String COMMENT '城市编号',
`Districtid` String COMMENT '区编号',
`Operators` String COMMENT '操作人',
`Orderdate` Date COMMENT '订单日期',
`OrderTime` DateTime COMMENT '订单时间',
`CreateTime` DateTime DEFAULT now() COMMENT '创建时间'
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/wang.core_msg_local', '{replica}')
PARTITION BY toYYYYMMDD(Orderdate)
ORDER BY (Type, Subtype, Successflag, Province, Operators)
TTL Orderdate + toIntervalDay(15)
SETTINGS index_granularity = 8192 ;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐