Clickhouse入门(五)- 常见数据类型

Clickhouse线上环境用了半年多,简直堪称完美。每秒1W~5W点数据写入,当前超百亿级别数据规模,仍然可以支持到几十毫秒级别的数据查询。

今天又想把报警日志存入到Clickhouse数据表中,遂又过来熟悉下。

数据类型

Clickhouse数据类型分为基础类型、复合类型和特殊类型。

基础类型

数值类型
  • Int:Int8/Int16/Int32/Int64/UInt8/UInt16/UInt32/UInt64/
  • Float:Float32/Float64
  • Decimal:Decimal32/Decimal64/Decimal/128
字符串类型
  • String:
  • FixedString:
  • UUID:
时间类型
  • DateTime:精确到秒
  • DateTime64:精确到亚秒
  • Date:精确到天

复合类型

  • Array:数组,自动推断类型
  • Tuple:元组,每个元素支持不同数据类型,且不要求兼容
  • Enum:Enum8/Enum16 枚举类型
  • Nested:嵌套类型,指表嵌套,类似于主表中存储detail信息;

特殊类型

  • Nullable:可空修饰符
  • Domain:IPV4/IPV6

类型使用思考?

1、UUID能不能充当表的主键?

通过查看MergeTree存储接口,可初步判断,UUID可以充当为每行的主键,且主键还允许重复。

CREATE TABLE iios_cloud.event_verify_data (
	uuid UUID,
	event_time DateTime,
	verify_time DateTime,
	company UUID,
	module Enum8('IIOS-CONSOLE'=1,'IIOS-AUTH'=2,'IIOS-ENERGY'=3,'IIOS-GUARD'=4),
	duration_sec UInt32
) 
ENGINE = MergeTree
PRIMARY KEY (uuid)
PARTITION BY (company,module,
 toYYYYMM(event_time))
ORDER BY (uuid)
CREATE TABLE iios_cloud.event_data (
	uuid UUID,
	module Enum8('IIOS-CONSOLE'=1,'IIOS-AUTH'=2,'IIOS-ENERGY'=3,'IIOS-GUARD'=4),
	event_time DateTime,
	message String,
	value String,
	threshold String,
	level Enum8('LOW'=1,'MIDDLE'=2,'HIGH'=3,'URGENT'=4),
	param String,
	classify String,
	company UUID,
	factory_model_id String
) 
ENGINE = MergeTree
PARTITION BY (company,module,
 toYYYYMM(event_time))
ORDER BY (level,factory_model_id,
 event_time)
ALTER TABLE iios_cloud.event_verify MODIFY COLUMN module  Enum8('IIOS-CONSOLE'=1,'IIOS-AUTH'=2,'IIOS-ENERGY'=3,'IIOS-GUARD'=4,'IIOS-SPC'=5)
CREATE TABLE iios_cloud.event_buffer AS iios_cloud.event_data ENGINE = Buffer(iios_cloud, event_data, 16, 10, 100, 10000, 1000000, 10000000, 100000000)