0%

行存储与列式存储

引言

在OLTP场景下,用户需要足够全的字段数据,会对数据频繁的插入更新删除,选择行存储会比较合适。在OTAP的场景下,数据分析可能只需要某些字段,无需将所有字段数据捞出,可能基于多表构建物化视图,这种方式选择列存储更灵活。

哪些数据是行存储,哪些数据库是列存储

行存储的组件有Mysql,TiDB。列存储的产品有Hbase,TiFlash,GP。

列式存储Hbase

Hbase 表存储中有列族与列的定义,列族是固定的,列族下的列是稀疏的,可动态增加。
Hbase 存储按照region进行切分,一个region中包含多个hstore,一个hstore对应table中的一个列族存储的部分数据。一个hstore由两部分组成,一部分是memstore,另一部分是storefile,底层就是Hfile。

行存储TiDB

TiDB的数据存储在TiKV,一条数据映射在TiDB中的结构如下:

1
2
Key:   tablePrefix{TableID}_recordPrefixSep{RowID}
Value: [col1, col2, col3, col4]

其中value会将每个column 按照”,” join存储 。