| Hive | Mysql | Hbase |
---|
存储数据 | 依赖HDFS | 本地文件系统;采用行存储模式,底层是binlog,用来存储业务数据 | 底层是hdfs;列式数据库,可以存储海量的数据 | 数据更新 | 不建议对数据的改写 查询 | 增删改查 | 快速插入 | 索引 | Hive 在3.0版本之后,删除了索引的功能 | Mysql 支持索引,适合在线在线查询数据 | 有且仅有一个:rowkey | 执行 | Hive底层依赖的是MR,并行计算,延迟高 | 默认存储引擎Innodb(B+树),延迟低 | LSM(Log-Structure Merge)树 | 扩展性 | Hive 支持分布式并行操作,支持海量数据 | 无 | 分布式并行操作,支持海量数据 | 应用场景 | hive属于olap系统 是面向分析的,做海量数据的离线数据分析 | 数据库属于oltp系统 是面向事务的 ,做业务数据事务处理 | 应用的在线事务问题和大数据场景的海量存储问题。 |
- LSM树原理把一颗大叔拆分成N颗小树,它首先在内存中,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成为一个大叔,用来优化读性能。
- B+树
1. OLTP与OLAP
OLTP:Hbase、 Mysql OLAP:Hive
OLTP和OLAP的区别
- 联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。
特点:.实时性要求高、数据量不是很大、高并发,并且要求满足ACID原则。(比如两人同时操作一个银行卡账户) - 联机分析处理OLAP(On-Line Analytical Processing) 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。
特点:实时性要求不是很高、数据量大 - 总结:
OLTP即联机事务处理,就是我们经常说的关系数据库,增删查改就是我们经常应用的东西, OLAP即联机分析处理,是数据仓库的核心部心,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息
2. ACID
RDBMS是关系性数据库支持join、ACID、有schema(创建表的时候必须要指定有哪些列、列是什么类型…)支持二级索引。 Hbase不支持join,也不支持ACID,对事务支持有限,无schema、原生就支持分布式存储的,所以可以用来存储海量数据。
ACID
- Atomicity(原子性):一个事务中的所有操作,要么全部完成,要么全部不完成
- Consistency(一致性):在事务开始前后,数据库的完整性没有被破坏
- Isolation(隔离性):数据库运行多个并发事务同时对其数据进行读写和修改,隔离性可以防止多个事务并发执行时而导致数据的不一致。
- Durability(持久性):事务处理结束后,对数据的修改是永久的。
|