引言
在OLTP场景下,用户需要足够全的字段数据,会对数据频繁的插入更新删除,选择行存储会比较合适。在OTAP的场景下,数据分析可能只需要某些字段,无需将所有字段数据捞出,可能基于多表构建物化视图,这种方式选择列存储更灵活。
哪些数据是行存储,哪些数据库是列存储
行存储的组件有Mysql,TiDB。列存储的产品有Hbase,TiFlash,GP。
列式存储Hbase
Hbase 表存储中有列族与列的定义,列族是固定的,列族下的列是稀疏的,可动态增加。
Hbase 存储按照region进行切分,一个region中包含多个hstore,一个hstore对应table中的一个列族存储的部分数据。一个hstore由两部分组成,一部分是memstore,另一部分是storefile,底层就是Hfile。
行存储TiDB
TiDB的数据存储在TiKV,一条数据映射在TiDB中的结构如下:
1 | Key: tablePrefix{TableID}_recordPrefixSep{RowID} |
其中value会将每个column 按照”,” join存储 。