不同之处:
1.数据库主要是OLTP的服务
2.数据仓库主要进行的是OLAP的服务
OLTP:
联机事务处理,用来实时记录交易信息,对这类系统的期望是能够快速返回响应信息。,一般是在毫秒级别的,能够快速响应的原因是拥有健全的索引机制。如B+的mysql健全索引,以及B的oracle索引,能够快速的进行DML的一些操作。
关键词:事务(原子性的)
扩展一下:
1》数据的事务处理是行级的,例如insert。。。update语句均是进行一个行数据的查询操作。(理解困难的话,从数组的行这个维度去理解)
2》OLTP的所有的操作都是实时的
实时:查询速度是十分的快的,而且响应的速度也是十分的快。(这里得快是到毫秒级别的响应,联想自己使用sql对数据库的操作。)
OLAP:
联机分析处理,用来分析所存储数据,一般系统按天,按周,按月生成报表。
(如使用ETL工具,进行数据的同步,在ktr中进行数据的字段预处理,来进行一个过滤,在kjob中进行一个定时周期的设置,天周 周,月根据业务需要进行周期的设置)
总结:
OLAP更倾向于业务,但是OLAP的话更加倾向于分析。
OLAP是属于商业智能的范畴,数据需要研究,处理,分析,以便收集信息。
根据以上的特性,进行一个业务场景的总结:
OLTP:一般指的是数据库(泛指的是RDBMS数据)
OLAP:重点在于分析上,用于查询或者分析使用,没有实时要求,一般是按照天周,月进行数据的汇总。更倾向于商业智能,据此,进行一个推论,因此,HIve成为了人工智能,AI,数据分析的开头。
特点:
1》数据量大
2》数据种类的多样化
好了了解完了数据库,接下来进行理解一下CAP原则:
CAP原则又称为CAP原理,指的是在在一个分布式系统中,一致性(consistence),高可用性(Avaliablity),分区容错性(partition),一般数据库三者是不可以进行兼容的。
分析:
RCA一般是满足于RDBMS的,(满足一致性,高可用性)
CP原则一般是满足于MongoDB,Hbase,Redis,(满足于一致性和分区容错性),不满足高可用性,也就是进行一个快速的响应的结果,以及支持事务的操作。
理解一下HIve在hadoop中的位置:
HIve特性:
1》位于应用层
2》ETL工具
3》类Sql
4》数据仓库
5》本质上是Mapreduce
下面一张图来进行解释hive在Hadoop中的位置,如下图所示:
其中Mapreduce以及yarn和HDFS共同组成了Hadooop。
MapReduce:关键词,分布式,并行计算,离线。
YARN:hadoop资源,管理器
Hive是一个应用层的东西,定位是数据仓库,所偏向的是数据分析,存储和计算的方向,其本质是mapreduce。
ETL(抽取,转换,加载的过程),工具有kettle,hive,以及sqoop。
在新的技术范围内,计算引擎是mapreduce其中之一,基于计算引擎,推断,spark中也有Mr,因此有的公司使用spark中的mr作为计算引擎。
Hive的主备模式:有主也有从(这里可以去用分布式数据库理解,当主节点挂了,可以用从节点,自己内部可以重新进行选举。)
推论:如果挂了的话,HIVE应该如何去处理,在上面CAP的原则中,hive是没有做到高可用性的,但是如果数据库挂了的话,如何去实现一个高可用性。
关键词:存储,hive中真正的数据是存储在HDFS当中的。
Hive优点以及缺点:
1》高可靠性,这里的hive本身是不满足高可靠性的,是间接通过hdfs来进行可靠性的认证的,因为HDFS是磁盘的文件夹,从文件系统来进行理解的话。不满足CAP中的高可用性,因为没有相对健全的索引机制。
原理:hiveServer采用主备模式:主节点挂了,还有从节点
双metaStore:
超时重试机制:
2》类SQL:
类似SQL语法,内置大量的函数。
3》可扩展
自定义存储格式 (存储格式:.txt格式,gzip格式,二进制格式(序列化文件))
存储过程:类似于java中一些方法(里面有多条语句,同时可以包含判断,循环等等一些语句)
例如:select substring(name,1,7) from t user;
该函数不会影响输出的记录数?不用这个函数的条数与用了这个函数的条数是一致的,没影响。
例如:select split(adress ,',')from t_user;
UDF(不影响条数),UDAF(会让条数减少),UDTF(会让条数增多)
自定义函数(UDF/UDAF/UDTF)
4》多接口
定义:指的是可以直接或间接地方式,操作Hive,hive支持的操作方式
Beeline
JDBC
Thrift
Python
Rest
视图:让使用者更简洁,视图里面可以包含很多复杂的sql语句,但是语句中又没有逻辑的东西(如果有逻辑的东西应该使用存储过程)数据会临时存储数据库中,会提高查询效率,但是数据有更新或者删除的时候,需要对数据进行修改。
Hive缺点:
1》延迟很高:
1.默认M/R执行引擎
2.M/R启动有所延迟
2》不支持物化视图
1.hive虽然也提供了视图的概念,但是不支持物化视图,不能在视图上更新,插入,删除数据。
3》不适用于OLTP
1.暂不支持列级,别的数据增加,更新,删除操作。
4》暂不支持存储过程
只能使用UDF进行存储过程的代替。
Hive数据仓库创建之后,就会很少去运用。
Hive的应用场景
1》数据挖掘:
1.数据用户行为分析
2.兴趣分区
3.区域展示
2》非实时分析
1.日志分析
2.文本分析
3》数据汇总
1.每天/每周用户点击数
2.流量统计
3》作为数据仓库(这也是我在公司接触的最多的数据分析的场景)
1.数据抽取
2.数据加载
3.数据转换