基本概念
HBase表
HBase的表是三个维度排序的映射。从行主键、列主键和时间戳映射为单元格的值。所有的数据存储在HBase的表单元格中。
列
HBase表的一个维度。列名称的格式为“<family>:<label>”,<family>和<label>为任意字符组合。表由<family>的集合组成(<family>又称为列族)。HBase表中的每个列都归属于某个列族。
列族
列族是预定义的列集合,存储在HBase Schema中。如果需要在列族下创建一些列,首先需创建列族。列族将HBase中具有相同性质的数据进行重组,且没有类型的限制。同一列族的每行数据存储在同一个服务器中。每个列族像一个属性,如压缩包、时间戳、数据块缓存等。
时间戳
用于索引同一份数据的不同版本,时间戳的类型是64位整型。时间戳可以由HBase在数据写入时自动赋值或者由客户显式赋值。
索引
CloudTable作为大数据存储服务,提供高效的kv随机查询能力。在此基础上,CloudTable服务引入自研的分布式多维标签索引能力,存储格式与计算基于位图进行。用户可以根据自身业务需求来定义HBase表中的哪些字段需要构建标签索引,用户写入数据时将自动生成标签数据。同时,标签索引基于Lucene的语法,提供高效的多维标签查询接口。可应用于用户画像、推荐系统、人工智能、时空数据等场景。
CloudTable服务支持标签索引能力,您只需要创建CloudTable集群,就可以在弹性云服务器(ECS)上开发客户端应用进行多维标签查询。
分区
分区用于将数据划分成不同区间,逻辑上可以理解为将原始表划分成了多个子表,可以方便的按分区对数据进行管理。
分桶
根据分桶列的Hash值将数据划分成不同的Bucket。
FE(Frontend)
主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
BE(Backend)
主要负责数据存储、查询计划的执行。数据会被切分成分片,在 BE 中多副本存储。
副本
为了在异常情况下保证数据的安全性和服务的高可用性,云数据库ClickHouse提供了副本机制,将单台服务器的数据冗余存储在两台或多台服务器上。
ClickHouse分片
在超大规模海量数据处理场景下,单台服务器的存储与计算资源可能会成为瓶颈。为了进一步提高服务效率,云数据库ClickHouse将海量数据分散存储至多台服务器上,每台服务器只存储和处理海量数据的一部分。在这种架构下,每台服务器被称为一个分片(Shard)。
Doris数据分片
Doris表按两层结构进行数据划分,分别是分区和分桶。
每个分桶文件就是一个数据分片(Tablet),Tablet是数据划分的最小逻辑单元。每个Tablet包含若干数据行。各个Tablet之间的数据没有交集,并且在物理上是独立存储的。
一个Tablet只属于一个Partition,相应的多个Tablet在逻辑上归属于不同的分区(Partition)。而一个Partition包含若干个Tablet。因为Tablet在物理上是独立存储的,所以可以视为Partition在物理上也是独立。Tablet是数据移动、复制等操作的最小物理存储单元。