1.行式数据库与列式数据库区别
行式数据库
数据是按行存储的
没有索引查询使用大量的io
建立索引和视图需要大量时间和资源
列式数据库
数据按列存储-每一列单独存放
数据即索引
访问查询的涉及的列-大量降低系统io
每列由一个线索来处理-查询的并发处理
数据类型和数据特征相似-高效压缩
应用场景:行式数据库时候增删改查操作
列式数据库更适合做数据分析和海量存储和商业智能
2.HBase与mysql 区别?
定义
a)Mysql:关系型数据库,主要面向OLTP,支持事务,支持二级索引,支持sql,支持主从、Group Replication架构模型(此处以Innodb为例,不涉及别的存储引擎)。
b)Hbase:基于HDFS,支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql数据库。天然分布式,主从架构,不支持事务,不支持二级索引,不支持sql.
3.Hbase 如何避免热点问题
1).加盐就在rowkey的前面分配随机数,rowekey前缀匹配,就能分配的到不同的region中
如果集群有500台机器,那么随机生成0-499的随机添加的rowkey首部。
12 17765657979 18688887777 201806121502 #随机数,主叫,被叫,时间
在插入数据时,判断首部随机数字,选择对应的region存入,由于rowkey首部数字随机,所以数据也将随机分布到不同的regionServer中。这样就能很好的避免热点问题了
2).预分区
3).反转
4).哈希
4.LSM树
LSM牺牲了部分的读的性能,提供写的性能,原理是把一颗大树拆成N颗小树,它写入到内存中,在内存构建一颗有序的小树,随着小树越来越大,内存的小树会flush到磁盘上,当读时,不知道遍历哪个小树,就遍历所有小树。LSM树使用了一个内存组件和多个磁盘组件。