• clickhouse基础原理


    1.clickhouse支持常见的数据类型

    string ,int,float等等

    特殊:

    1.string中的-inf是负无穷

    inf是正无穷

    nan是空值

    FixedString(N),类似与mysql中的varchar,可以指定字符串的长度

    2.枚举类型,clickhouse不支持boolean类型,需要使用枚举来做

    包括 Enum8 和 Enum16 类型。Enum 保存 'string'= integer 的对应关系。

    Enum8 用 'String'= Int8 对描述。

    Enum16 用 'String'= Int16 对描述。

    用法演示:

    创建一个带有一个枚举 Enum8('hello' = 1, 'world' = 2) 类型的列:

    CREATE TABLE t_enum

    (

        x Enum8('hello' = 1, 'world' = 2)

    )

    ENGINE = TinyLog

    这个 x 列只能存储类型定义中列出的值:'hello''world'。如果尝试保存任何其他值,ClickHouse 抛出异常。

    :) INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello')

     

    INSERT INTO t_enum VALUES

     

    Ok.

     

    3 rows in set. Elapsed: 0.002 sec.

     

    :) insert into t_enum values('a')

     

    INSERT INTO t_enum VALUES

     

     

    Exception on client:

    Code: 49. DB::Exception: Unknown element 'a' for type Enum8('hello' = 1, 'world' = 2)

    从表中查询数据时,ClickHouse 从 Enum 中输出字符串值。

    SELECT * FROM t_enum

     

    ┌─x─────┐

    │ hello │

    │ world │

    │ hello │

    └───────┘

    如果需要看到对应行的数值,则必须将 Enum 值转换为整数类型。

    SELECT CAST(x, 'Int8') FROM t_enum

     

    ┌─CAST(x, 'Int8')─┐

    │               1 │

    │               2 │

    │               1 │

    └─────────────────┘

    3.数组,tuple,date,还有很多类型,可以去官网上看。

     

     

     

    2.表引擎:

    1.tinylog:

    特点:

    1. 这个引擎存在磁盘中
    2. 不支持索引
    3. 没有并发控制,但是支持并发(同时读,同时写,读和写),只能支持同时读的并发

    应用场景:小表,这个表一般只用于查询,例如国家,省份等

    使用方式:创建表的时候指定引擎即可

     

    2.memory

    特点:

    1.内存引擎,速度快,可以达到每秒10g,官网建议上限1亿条数据

    2.不支持索引

    使用方式:用于测试

     

    3.merge

    特点:

    1.本身不存储数据,通过合并其他表的数据来得到自身的数据

     

    4.mergetree(重点)

    会自动的合并多个分支,减少了数据的存储

    特点:

    1. 按照主键进行排序
    2. 可以指定分区
    3. 可以支持数据副本,保证数据安全性
    4. 支持数据采样

    索引粒度:每个索引有多少行,默认值是8192

    数据片段头在zk中的存储方式

    使用直接io来操作磁盘合并时所需要的最小数据量,数据小于10g采用缓存io,大于10g采用磁盘io

    linux中的io方式:直接io,缓存io

     

    5.replacingmergetree

    这个引擎是在mergertree的基础上,添加了删除重复数据的功能,该引擎和mergetree的不同之处在于它会删除

    具有相同主键的重复项.

    ver:版本列

     会自动进行数据的合并,但是只会保存最大的版本

    6.summingmergertree

    会把所有具有相同主键的数据指定的列合并为一行,会取最先出现的值。

    7.distributed

    分布式引擎,本身不存储数据,但是可以在多个服务器上进行分布式查询,可以并行读。

    把不同的数据存到不同的机器上。

     

     

     

     

     

     

     

     

  • 相关阅读:
    Tomcat架构解析(五)-----Tomcat的类加载机制
    session与cookie
    freemarker常用标签解释遍历
    freemarker常用标签解释三
    freemarker常用标签解释二
    freemarker常用标签解释
    禁止浏览器自动填充
    使用cookie实现自动登录
    长连接和短连接
    filter防止xxs攻击
  • 原文地址:https://www.cnblogs.com/javazyh/p/13093552.html
Copyright © 2020-2023  润新知