clickhouse两种驱动的在对数据方面压缩的区别

发布时间 2023-08-09 14:29:03作者: LiAnG24

两种驱动:

ru.yandex.clickhouse.clickhousedriver
com.clickhouse.jdbc.ClickHouseDriver

数据包的格式顺序
字段名+字段类型+对应的数据

(1):
如果不是com类型的驱动,每个数据字符一一映射为对应的ascii码
格式为:字段名\r\n字段类型\\r\n数据
一行数据里面的不同数据类型用 \n 隔开,
不同行数据之间用 \r\n 隔开

(2):
如果是com类型驱动,则不会有转义字符隔开
字段名字段类型数据 紧凑在一起
这里会有一些规律

  • 字段名处会先指出后续这个字段的长度是多少,再跟着字段名。比如 4name
  • 字段类型处也是如此 比如6String
  • 对应的数据所占的字节数则需要分情况
    • Int UInt Float 这种会根据对应的类型固定了取几个字节
    • Date,DateTime这种也会固定几个字节
    • String这种并不会指定,因为拿到的name数据可能很长很长,一个字节表示不完,需要根据当前buffer流求出,此处的规则是如果当前字节的最高位是 1 则说明还没完,累加完当前的字节完还要取下一个字节再判断

两种对应例子: