简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。
数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。
单从概念上讲,有些晦涩。任何技术都是为应用服务的,结合应用可以很容易地理解。以银行业务为例。数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记帐。数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要设立ATM了。
显然,银行的交易量是巨大的,通常以百万甚至千万次来计算。事务系统是实时的,这就要求时效性,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要能够提供有效的分析数据就达到目的了。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看W.H.Inmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
“与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
“不可修改”:数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋。
补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
1.效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。
2.数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
3.扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,客户不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了。
数据仓库(数仓)和数据库的区别
时间: 2024-10-21 21:53:42
数据仓库(数仓)和数据库的区别的相关文章
数仓简介
数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的"Building the Data Warehouse"(<建立数据仓库>)一书中所提出的定义被广泛接受,数据仓库是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Variant)的数据集合,用于支持管理决策. OLTP:on-line transaction proccessing,联机事务处理,主要是业务数据
干货:解码OneData,阿里的数仓之路。
免费开通大数据服务:https://www.aliyun.com/product/odps 据IDC报告,预计到2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量是2013年的10倍.正在"爆炸式"增长的数据的潜在巨大价值正在被发掘,它有可能成为商业世界的"新能源",变革我们的生产,影响我们生活.当我们面对如此庞大的数据之时,如果我们不能有序.有结构的进行分类组织和存储,那么在价值被发现前,也许数据成本灾难已经来临.它犹如堆积如山的垃圾,给我们企业
数仓模型示例
数仓模型案例一.范式建模1.零范式为便于分级说明三范式的特点,我们将不满足任何范式即无范式的数据称为零范式,假设它只满足一个最基本的条件--数据中不存在重复数据.假设根据零范式的定义数据库中有一张保险订单统计表,表中包含了用户id.保险id.用户名.注册省份.注册城市.注册区县.保险名称.购买信息(价格.数量).总保费.购买日期.具体情况如下图:2.一范式在零范式的基础上加上字段具有原子性即属性不可分这个条件后便形成了符合一范式的表.基于上面的保险订单统计表一范式和零范式的区别主要在于将表中的"
数仓建模
基本概念: DW (Data Warehouse) 是一个面向主题的(Subject Oriented), 集成的(Integrated), 相对稳定的(Non-Volatile), 反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support). ODS (Operational Data Store) 是一个面向主题的, 集成的, 可变的, 当前细节数据集合. 用于支持企业对于即时性的, 操作性的, 集成的全体信息的需求. 与数据仓库(
企业大数据平台下数仓建设思路
免费开通大数据服务:https://www.aliyun.com/product/odps 介然(李金波),阿里云高级技术专家,现任阿里云大数据数仓解决方案总架构师.8年以上互联网数据仓库经历,对系统架构.数据架构拥有丰富的实战经验,曾经数据魔方.淘宝指数的数据架构设计专家. 与阿里云大数据数仓结缘 介然之前在一家软件公司给企业客户做软件开发和数仓开发实施,数仓开发和实施都是基于传统的基础架构.2008年加入阿里进入淘宝数据平台部后,他开始接触分布式计算平台Hadoop. 初始时在Hadoop平
调度、模型、同步与任务——阿里云大数据数仓建设性能优化方案
摘要:对于阿里云大数据数仓建设性能优化而言,主要可以从调度优化.模型优化.同步优化以及任务优化这四个方面着手.其实,对于性能优化而言,最终还是会归结到"资源"之上,所以资源是否足够,分配是否合理也是我们在进行性能优化时必须考虑的关键所在. 本文将主要围绕以下四个方面进行介绍:调度优化.模型优化.同步优化以及任务优化.对于调度优化而言,将分享任务调度如何进行优化,以及如何看到调度的瓶颈点,以及在初步进行建设和使用数据仓库的任务之后,对于任务如何进行调整来满足业务的时间要求.对于模型优化而
如何才能让数仓构建成本降低80%,维护成本降低70%?
构建数据仓库的核心是建模,在数据仓库的构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线.从数据源中抽取数据,然后对这些数据进行转化,最终加载到目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,Load). 通常数据抽取工作分抽取.清洗.转换.装载几个步骤: 抽取主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取和缓慢渐变的规则. 清洗主要是针对系统的各个环节可能出
Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型
Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count '表名称' 删除记录 delete '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对
UTF-8和GBK编码之间的区别(页面编码、数据库编码区别)以及在实际项目中的应用
第一节:UTF-8和GBK编码概述 UTF-8 (8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,又称万国码,它包含全世界所有国家需要用到的字符,是国际编码,通用性强,是用以解决国际上字符的一种多字节编码.由Ken Thompson于1992年创建.UTF-8用1到4个字节编码UNICODE字符,它对英文使用8位/8Bit(即1个字节/1Byte),中文使用24位/24Bit(3个字节/3Byte)来编码.用在网页上可以同一页