HBaseClickHouseStarRocks
Posted 今天好好洗头了嘛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBaseClickHouseStarRocks相关的知识,希望对你有一定的参考价值。
HBase
HBase行锁机制,保证对单行数据操作的原子性。
ClickHouse
- 基本概念
数据的基本映射单元:一列数据用Column表示,一列数据中的单个值用Field表示。
数据类型:DataType,进行序列化和反序列化操作
Block:ClickHouse内部是面向Block操作的,Block是由Column,DataType和列名称组成的。 - 具体细节:
1)建表时,会指定字段进行sort by,保证数据在磁盘上连续存储。
2)ClickHouse通过对数据排序,然后对数据建立稀疏索引,MergeTree的索引粒度默认为8192。
3)在存储目录当中,每个分区目录中会有一个’primay.idx’的一级索引文件,分区下每一列都对应有一个列名.bin的文件(存储数据)和一个列名.mrk的文件(这个是标记文件,二进制进行存储,会和索引文件进行对齐。)
4)默认索引粒度为8192,相当于每一列中每8192条数据生成一个block。根据主键索引我们会知道数据到block的映射,根据标记文件,它可以知道我的哪个block存在哪里。(一个标记由blockid,在数据文件(.bin文件)的偏移量,压缩后块中偏移量(会出现多个block在一个压缩块中,因为如果是int类型的数据,一个数据一个字节,8192个数据才8KB,这样完全没必要压缩,ck会根据最小64KB,最大1MB的数据量进行压缩,如果一个block块数据量不够,会继续和下一个bolck的数据一起进行压缩))。 - LSM算法:
1)写入数据时,先记录日志
2)把数据放到内存中进行使用(CK这里是insert一次数据,在内存中排完序,然后就直接写入磁盘。)
3)内存满了,进行数据的溢写
4)定期进行数据的合并(CK在合并前进行查询时,会查出多块内容,但是每块内容内是有序的。)
StarRocks
- 基本概念
一款极速全场景MPP分析型数据库
1)极速:全面向量化
2)全场景:兼容mysql协议,访问简单。一栈式解决全部场景(通过星型模型,雪花模型等进行灵活的多表join)
3)MPP:大规模并行处理(任务分散计算,结果统一汇聚)
4)分析型数据库:大规模的数据进行多维度的查询分析 - 架构
1)FE节点:主备,存储元数据。leader负责写入数据到BE
2)BE节点:存储数据 - 存储
1)一张表中的列分为维度key列和指标value列;
2)列式存储,每1024个数据为一个逻辑block,每64KB进行数据压缩存储;
3)索引:每一个block块一个索引(逻辑块的起始行号),根据这个索引去找到对应物理块的索引(物理块的起始行号)。 - 使用
1)建表
①明细模型:允许排序键重复,允许部分的维度列为排序键(eg:DUPLICATE KEY(event_time, event_type));
②聚合模型:不允许排序键重复,所有维度列都是排序键,需要对指标列指定聚合函数(eg:pv BIGINT SUM DEFAULT “0” COMMENT "total page views"和AGGREGATE KEY(site_id, city_code));
③更新模型:不允许排序键重复,所有维度列都是排序键,需要指定主键(eg:UNIQUE KEY(create_time, order_id))。更新模型对于插入的数据有一个版本的概念,每次查询时,取最大版本的数据(版本较多时,查询时实时性降低)。
④主键模型:对比更新模型,可以支持频繁的更新功能。主键模型会把主键索引加载内存当中,在更新数据时候,底层是先对已有数据进行标记删除,然后再插入新的数据(牺牲了一点写入性能和内存占用,提高了查询效率)。
注意:建表时字段的顺序和最后指定排序键的顺序需要一样。
2)数据分布
①Range:数据按照区间进行分布节点
②Round-Robin:数据按照轮转进行分布节点
③Hash:数据根据哈希函数进行分布到不同节点
④List:根据固定的离散值进行分布到不同节点
⑤组合方式:按照上述四种进行组合,eg:Range-Hash
以上是关于HBaseClickHouseStarRocks的主要内容,如果未能解决你的问题,请参考以下文章