美文网首页
clickhouse使用ReplicatedMergeTree、

clickhouse使用ReplicatedMergeTree、

作者: mysimplebook | 来源:发表于2020-12-03 16:43 被阅读0次

    表引擎(即表的类型)决定了【https://clickhouse.tech/docs/zh/engines/table-engines/】:

    1、数据的存储方式和位置,写到哪里以及从哪里读取数据

    2、支持哪些查询以及如何支持。

    3、并发数据访问。

    4、索引的使用(如果存在)。

    5、是否可以执行多线程请求。

    6、数据复制参数。

    创建表使用引擎ReplicatedMergeTree、Distributed的语法格式:

    CREATE TABLE [IFNOTEXISTS] [db.] table_name [ON CLUSTER cluster]

    CREATE TABLE dm_report.table_name_data ON cluster bi_autorun_cluster

    (

    udid  String,

    app_id  String,

    ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/dm_report.table_name_data', '{replica}')

    ORDER BY udid SETTINGS index_granularity = 8192, use_minimalistic_part_header_in_zookeeper = 1;

    CREATE TABLE dm_report.table_name ON cluster bi_autorun_cluster

    (

    udid  String,

    app_id  String,

    ) ENGINE = Distributed(bi_autorun_cluster, dm_report, table_name_data, rand());

    ReplacingMergeTree引擎,可以针对相同主键的数据进行去重,它能够在合并分区时删除重复的数据。常使用这种引擎实现真正存储数据, 由于是分布式建表的, 数据分布在集群的各个机器中, 直接查表数据查不全, 所以要用到Distributed。

    Distributed相当于视图, 不真正存储数据, 用来查数据, 速度快、数据全。

    Distributed表引擎是分布式表的代名词,它自身不存储任何数据,数据都分散存储在某一个分片上,能够自动路由数据至集群中的各个节点,所以Distributed表引擎需要和其他数据表引擎一起协同工作。

    所以,一张分布式表底层会对应多个本地分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系【https://www.jianshu.com/p/3fbcc98a5021】

    所以Distributed表引擎的定义形式如下

    Distributed(cluster_name,database_name,table_name[,sharding_key])

    各个参数的含义分别如下:

    cluster_name:集群名称,与集群配置中的自定义名称相对应。

    database_name:数据库名称

    table_name:表名称

    sharding_key:可选的,用于分片的key值,在数据写入的过程中,分布式表会依据分片key的规则,将数据分布到各个节点的本地表。

    相关文章

      网友评论

          本文标题:clickhouse使用ReplicatedMergeTree、

          本文链接:https://www.haomeiwen.com/subject/sgnmwktx.html