行式存储:维护大量索引。存储成本高。不能做到线性扩展。对于随机读的效率高。对事物处理能力支持好
应用环境:表之间关联特性高。联机事务处理能力高。线性扩展不高数据量不能太大
列式存储:根据列的数据的相似性利于数据压缩。存储成本低。查询效率高
应用环境:对于单列或者列的获取较高。大数据环境利于数据压缩的
hbase的列族存储
列族:列的组合。
hbase table的组成:
table=rowkey+Framily+column+timestatmp+value
hbase建表语句解析
create 'demo:user',
{NAME=>'b',VERSIONS=>'3',COMPRESSION=>'SNAPPY',COMPRESSION_COMPACT=>'SNAPPY',REPLICATION_SCOPE=>1},
{NAME=>'b',COMPRESSION=>'SNAPPY',COMPRESSION_COMPACT=>'SNAPPY',REPLICATION_SCOPE=>1}
其中:
name:是列族
version:是版本。默认为3
replication_scope:实现远程集群的复制。通过预写日志实现
compression:压缩机制
压缩机制是使用cup资源换取磁盘空间资源。对读写没有太多影响
hbase利用LSM的存储思想:
1.先将数据存储在内存中
2.将数据持久刷入硬盘的文件中
3.对文件进行整合成大文件
hbase数据存储的目录解析
hbase-site.xml中:
hbase.rootdir配置的目录为hbse系统存储数据的位置。
hbase的元数据表为meta table表
resigon的数量不能低于集群的数量
store代表一个列族。region会根据其大小去判断是否切分
wal是hbase的预写日志, 作用是灾难恢复。regionserver对库的每一个操作都会先写到hlog中
hbase compaction
compaction的触发机制有三种:
1.刷数据的时候如果超出了硬盘的空间大小会触发大合并
2.定时触发。触发为【7-7*0.2,7+7*0.2】7代表majorcompaction。如果不想被触发只需要将7改为0即可
3.手动触发。用户触发为想让数据立即生效 管理员手动触发为整理磁盘空间大小