2:kafka
CREATE TABLE queue (
timestamp UInt64,
level String,
message String
) ENGINE = Kafka(‘localhost:9092’, ‘topic’, ‘group1’, ‘JSONEachRow’);
3.2.3:特殊引擎
1:Distributed分布式引擎
分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = Distributed(cluster, database, table[, sharding_key[, policy_name]])
[SETTINGS name=value, ...]
cluster - 服务为配置中的集群名
database - 远程数据库名
table - 远程数据表名
sharding_key - (可选) 分片key
policy_name - (可选) 规则名,它会被用作存储临时文件以便异步发送数据
/etc/metrika.xml配置文件,一个shard代表一个节点,一个replica代表一个副本
<remote_servers>
<logs>
<!-- 分布式查询的服务器间集群密码
默认值:无密码(将不执行身份验证)
如果设置了,那么分布式查询将在分片上验证,所以至少:
- 这样的集群应该存在于shard上
- 这样的集群应该有相同的密码。
而且(这是更重要的),initial_user将作为查询的当前用户使用。
-->
<!-- <secret></secret> -->
<shard>
<!-- 可选的。写数据时分片权重。 默认: 1. -->
<weight>1</weight>
<!-- 可选的。是否只将数据写入其中一个副本。默认值:false(将数据写入所有副本)。 -->
<internal_replication>false</internal_replication>
<replica>
<!-- 可选的。负载均衡副本的优先级,请参见(load_balancing 设置)。默认值:1(值越小优先级越高)。 -->
<priority>1</priority>
<host>example01-01-1</host>
<port>9000</port>
</replica>
<replica>
<host>example01-01-2</host>
<port>9000</port>
</replica>
</shard>
<shard>
<weight>2</weight>
<internal_replication>false</internal_replication>
<replica>
<host>example01-02-1</host>
<port>9000</port>
</replica>
<replica>
<host>example01-02-2</host>
<secure>1</secure>
<port>9440</port>
</replica>
</shard>
</logs>
</remote_servers>
4:数据类型
Int类型:Int8、 Int16、 Int32、 Int64、 Int128、 Int256
时间类型:Date32、DateTime64、Date
iP:IPv4、IPv6
小数:Float32、Float64、Decimal32、Decimal64、Decimal128
boolean:
字符串:String、FixedString、UUID
特殊类型:数组Array、枚举Enum8、Enum16、元组tuple(T)、嵌套Nested、位置坐标Point、Ring、Polygon、MultiPolygon
5:数据库使用
5.1:表
5.1.1:表架构
1、本地表(Local Table)和分布式表(Distribute Table)
- 一张本地表相当于一份数据分片,只存储在自己的服务器上。可以作为分布式表的一部分,不是分布式表时就是自己的一张表
- 分布式表本身不存储数据,它是本地表的访问代理,借助分布式表,能够代理访问多个数据分片,从而实现分布式查询,分布式表只是将数据分散存放了,相当于进行了负载均衡和一定的容错
本地表和分布式缺点:存在单点问题,分片故障数据丢失
本地表与分布式表的区别在于:
- 本地表的写入和查询,受限于单台服务器的存储、计算资源,不具备横向拓展能力;
- 而分布式表的写入和查询,则可以利用多台服务器的存储、计算资源,具有较好的横向拓展能力。
2、单机表和复制表
- 单机表:数据只会存储在当前服务器上,不会被复制到其他服务器,即只有一个副本。
- 复制表:ClickHouse依靠ReplicatedMergeTree引擎族与ZooKeeper实现了复制表机制,来实现CH的高可用,数据会被复制到多个服务器上形成多副本进行存储。
单机表与复制表的区别在于:
- 单机表在异常情况下无法保证服务高可用。
- 复制表在至少有一个正常副本的情况下,仍旧能够对外提供服务。
单机表和复制表缺点:受限于单台服务器的存储、计算资源,不具备横向拓展能力;复制表的副本故障时查询需要手动切换查询的实例。
5.1.2:建表
1:单机表和复制表
创建单机表
CREATE TABLE database.order
(
`Operators` String COMMENT '操作人',
`Orderdate` Date COMMENT '订单日期',
`OrderTime` DateTime COMMENT '订单时间',
`CreateTime` DateTime DEFAULT now() COMMENT '创建时间'
)
ENGINE = MergeT

最低0.47元/天 解锁文章
9427

被折叠的 条评论
为什么被折叠?



