这几天新来的小伙子吃饭的时候突然问我,军哥,面试的时候问我数据库和数据仓库的区别,我都蒙了,一通乱扯,这俩究竟啥区别呀?
我问他,你是不是觉得数据仓库就是大型数据库?小伙子犹豫着点点头.
我觉得这个很正常,这是大部分人的理解
但事实上这哥俩虽然就差一个字,却不是一个东西,数据仓库更加不是大型数据库
我想大部分面试官问这个问题其实是想考察你的逻辑表达能力和用词的专业性,以此来筛选科班和培训机构出来的应聘者
其实这个问题我觉得完全没有意义,因为实际开发中你压根不会想这个无聊的问题,再者从出发点来说科班也有混子,我反而更喜欢培训机构出来的有几年工作经验的人做同事,因为他们遭受过社会的毒打,已然知道了人情冷暖,分得清恶语良言,更加明白遇到问题不能甩,一定要想办法解决.他们更加愿意学习而不是抱柴守薪!
好了闲话不多说下面来说一说数据库与数据仓库的区别
其实比较这两位的区别实质上就是比较LOTP和OLAP的区别
所谓OLTP(On-LineTransationProcession)指的是联机事务处理
OLTP系统注重的是数据安全,完整,响应效率,通常指的就是RDBMS关系型数据库,也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改
记住她的两个特性:
1.面向事务,支持事务(Transation)
2.RDBMS:例如MySQL ORACLE
尤其要注意 :Redis HBase 不是NoSQL数据库 没有事务支持
OLAP(On-LineTransationProcession)指的是联机分析处理
OLAP系统注重数据分析,主要指的是数据仓库,数据集市(小型数仓),面向分析数据库,面向分析的软件,一般针对某些主题历史数据进行分析,支持管理决策
1.面向分析 支持分析
2.数据仓库:Apache Hive 、Apache impala、Apache Kylin
简单的来说,数据库偏向于管理和储存,数据仓库偏向于整合和分析
数据库:传统的关系型数据库的应用,主要是基本的、日常的事务处理,更关注业务交易处理(OLTP)
数据仓库:数据仓库支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询效果,一般结合BI,更关注数据分析层面(OLAP)
随着业务指数级的增长,数据量陡增,从最初粗放的数据分析逐步演化为角色和场景都非常精细化的集群分析。这类非常具体,且能够对公司决策起到关键性作用的数据,很难从业务数据库中调取出来,主要原因是:
1、业务数据库中的数据结构是为了完成交易设计的,不是为了查询和分析的便利设计的
2、业务数据库大多数是读写优化的,对于大量数据的读(查询指标,一般是只读类型的数据查询)的支持不足
数据仓库的作用在于:
1、数据结构的设计更偏向于查询和分析
2、只读优化的数据库,对于数据写入的速度要求不高,只需要做大量数据的复杂查询的速度够快就可以了。
数据模型上的区别:
数据库:主要遵从范式模型(1NF,2NF,3NF,等等)(感兴趣的可以查询六大范式),从而尽可能减少数据冗余,保证数据引用的完整性。
数据仓库:强调数据分析的效率,复杂查询的速度,数据之间的相关性分析。数据仓库多使用多维模型,提高数据分析的效率。
产品实现上的区别:
数据库:通常使用行式存储,如Oracle,Microsoft sql server等
数据仓库:通常使用列式存储,如SAP IQ,Hive等
好了,大概就是这些!希望能对大家有所帮助,欢迎点餐收藏!