1、逻辑层面/概念层面:数据库和数据仓库其实是一样的或者及其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。但是,数据库通常更关注业务交易处理(OLTP),而数据仓库更关注数据分析层面(OLAP),由此产生的数据库模型上也会有很大的差异。2、数据库通常追求交易的速度,交易完整性,数据的一致性等,在数据库模型上主要遵从范式模型(1NF,2NF,3NF等),从而尽可能减少数据冗余,保证引用完整性;而数据仓库强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以在数据库模型上,数据仓库喜欢使用多维模型,从而提高数据分析的效率。3、产品实现层面:数据库和数据仓库软件是有些不同的,数据库通常使用行式存储,如SAP ASE,Oracle, Microsoft SQL Server,而数据仓库倾向使用列式存储,如SAP IQ,SAP HANA。数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析 *** 作,侧重决策支持,并且提供直观易懂的查询结果。我尝试着再补充些具体的事例来说明,这样更可以帮助大家更好理解一些。举个最常见的例子,拿电商行业来说好了。基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。
数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。(维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID)
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看WHInmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
“与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
“不可修改”:数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋
补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
1效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。
2数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
3扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,客户不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了
首先,定义三个概念:数据库软件、数据库、数据仓库。
数据库软件:是一种软件,可以看得见,可以 *** 作。用来实现数据库逻辑功能。属于物理层。
数据库:是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的美,在于能够用二维表现多维关系。目前市面上流行的数据库都是二维数据库。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。
数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析。
接下来,就是详细说明了。在IT的架构体系中,数据库是必须存在的。必须要有地方存放数据。比如现在的网购,淘宝,京东等等。物品的存货数量,货品的价格,用户的账户余额之类的。这些数据都是存放在后台数据库中。或者最简单理解,我们现在微博,QQ等账户的用户名和密码。在后台数据库必然有一张user表,字段起码有两个,即用户名和密码,然后我们的数据就一行一行的存在表上面。当我们登录的时候,我们填写了用户名和密码,这些数据就会被传回到后台去,去跟表上面的数据匹配,匹配成功了,你就能登录了。匹配不成功就会报错说密码错误或者没有此用户名等。这个就是数据库,数据库在生产环境就是用来干活的。凡是跟业务应用挂钩的,我们都使用数据库。
而数据仓库则是BI下的其中一种技术。由于数据库是跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如刚才那个登录的功能,这张user表上就只有这两个字段,没有别的字段了。但是这张表符合应用,没有问题。但是这张表不符合分析。比如我想知道在哪个时间段,用户登录的量最多?哪个用户一年购物最多?诸如此类的指标。那就要重新设计数据库的表结构了。对于数据分析和数据挖掘,我们引入数据仓库概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。数据仓库的数据来源于那些后台持续不停运作的数据库表。数据的搬运就牵涉到另一个技术叫ETL。这个过程就是数据从一个数据库到了数据仓库
什么是数据仓库
目前,数据仓库一词尚没有一个统一的定义,著名的数据仓库专家 WHInmon 在其著作《 Building the Data Warehouse 》一书中给予如下描述:数据仓库( Data Warehouse )是一个面向主题的( Subject Oriented )、集成的( Integrate )、相对稳定的( Non-Volatile )、反映历史变化( Time Variant )的数据集合,用于支持管理决策。 对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的 *** 作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
数据库是一个装数据(信息的原材料)的地方。
数据仓库是一种系统,这种系统也是用数据库装东西。
数据仓库系统(用数据库装东西)与其他基础业务系统(例如财务系统、销售系统、人力资源系统等,也是用数据库装东西)的区别是:
基础业务系统的特点是各管各的,例如财务系统生产了白菜,那么用一个数据库来装,人力资源系统生产了猪肉,再用一个数据库来装。我要做一道菜,需要分别到各个数据库去取,比较麻烦(现实的情况是大部分时候让种菜的农民伯伯送过来,但送过来的东西不一定是我想要的,而且不同的时候我想要不同的东西,经常会被农民伯伯骂,弄得双方都不开心)。另外一方面,各个数据库中放的是一些比较原始的东西,我要拿过来做菜,还需要经过很麻烦的清洗过程,一不小心里面可能就藏着一条大青虫。
那么,数据仓库系统就是建立一个大的超市,将各地农民伯伯出产的东西收集过来,清洗干净,分门别类地放好。这样,你要哪种菜的时候,直接从超市里面拿就可以了。
早期一直不理解数据仓库是什么困惑得很。
宏观一点讲,数据仓库就是堆放公司所有数据的地方,之所以把数据都堆在一起,是为了从中间找到有价值的东西。
数据仓库更多的是一个概念,不要把数据仓库想成那些号称是数据仓库的软件产品们。
数据仓库的物理上就是数据库。相对业务系统数据库叫 OLTP 数据库(用于业务处理),这种数据库叫 OLAP 数据库(用于业务分析)。
数据仓库的概念是针对以下基本需求产生的:
公司的业务系统很多,业务系统的历史数据不方便查询。不同的业务系统往往管理部门不同,地域不同。能不能将所有这些数据集中起来,再淘淘有没有有意义的业务规律。
数据仓库数据库往往很大,因为公司所有的数据集中得越多,越能淘到有价值的发现。例如随便就 100G 以上。
数据仓库的组成十分繁杂,既有业务系统的历史数据,又有人事、财务数据,还要自己建一些基础性的数据,例如,公共假期数据、地理信息、国家信息等等。
数据仓库概念包含从业务生产系统采集数据的程序,这个程序还不能影响业务系统的运行。(属于所谓 “ETL” 过程)
数据仓库包括业务系统长期的历史数据,例如 5 年,用来分析。(所谓 “ODS” 数据)
数据仓库包括针对某相业务值(例如销售量)重新打上标签的业务流水数据。(所谓 “ 事实表 ” 、 “ 维度表 ” )。
数据仓库概念兴许还包含报表生成工具(所谓 “BI” 工具)。这些工具能够达到几年前所谓 DSS (决策分析)的效果。
数据仓库的客户历史资量的分析,也许又与 CRM 系统粘点边。
总之,一点,一个公司想针对已有的历史业务数据,充分的利用它们,那么就上数据仓库项目。至于哪些吓唬人的大写字母的组合,只是达到这个目标的科学技术罢了。
牢记住数据仓库的基本需求,不要被供应商吓着。
数据仓库可以说是决策支持系统,能帮助老板了解企业的整体全貌,看到数据仓库提供的经过整理统计归纳的数据后老板凭自己的管理经验可以发现企业的问题或困难或成功因素在哪一方面,然后可以不断的追溯数据,直到确定到最具体的细节上,这样能够不断提升老板或管理层的管理水平,不断改善企业的管理。我们知道的最好的一个例子就是美国某大型超市啤酒和尿布的故事。
沃尔玛公司在美国的一位店面经理曾发现,每周,啤酒和尿布的销量都会有一次同比攀升,一时却搞不清是什么原因。后来,沃尔玛运用商业智能( Business Intelligence ,简称BI)技术发现,购买这两种产品的顾客几乎都是 25 岁到 35 岁、家中有婴儿的男性,每次购买的时间均在周末。沃尔玛在对相关数据分析后得知,这些人习惯晚上边看球赛、边喝啤酒,边照顾孩子,为了图省事而使用一次性的尿布。得到这个结果后,沃尔玛决定把这两种商品摆放在一起,结果,这两种商品的销量都有了显著增加。
数据库是数据仓库的基础。数据仓库实际上也是由数据库的很多表组成的。需要把存放大量 *** 作性业务数据的数据库经过筛选、抽取、归纳、统计、转换到一个新的数据库中。然后再进行数据展现。老板关注的是数据展现的结果。
数据仓库 (DATA WAREHOUSE/DATA MART) 的另一重要概念是数据从不同的数据库 (DATABASES) 里调出经过 ETL 工具 ( 如 POWERCENTRE , DECISIONSTREAM, SQL SERVER 2000 DTS, SQL SERVER 2005 SSIS) 过程进行清理,确证,整合并设计成多维 (dimensional framework) 。 以保证数据的正确、准确、完整 , 这是非常重要的一点。
我们现在的项目稳定运行了 6 年多,一直自己开发,最近慢慢开始使用 datastage 。很多大型项目之所以用工具,是因为工具的本身的特点是开发快,效率相对还可以,让你更好地有精力用在业务、数据库的优化以及数据测试上,和数据质量本身并没有关系。
而数据质量关系最密切的还是从设计(架构、模型等)、业务关系的理解、项目管理(含和客户的交流,以及遵从开发流程和测试流程)等一系列项目工程的过程。这也是为什么很多项目使用了 ETL 工具,但是数据质量还是提高不大的主要原因。
数据仓库的作用重在数据的集中管理。集中管理的最终目的是为了分析,预测。
所谓的 ETL 。不过是数据仓库的构建的一个必须过程。数据的抽取转换与装载,都是为了集中管理所做的基础工作,这些数据与动作的描述,都会有有响应的元数据进行描述。
在数据仓库建模的过程,我们一般都是采用多维模型,如星形,雪花型等等,这样做最大的特点就是效率高,数据的冗余度低。所以,把 OLAP 与数据仓库混为一谈我认为是片面的解释。
我们也可以选择业务逻辑模型建立数据仓库,这是很早以前的做法了,特点就是效率不高,数据的冗余度高,但他能实现非常难以表达的业务逻辑设计。
基于数据仓库最重要的是分析与预测,我认为,历史现在将来是数据仓库的精华。。
基于数据仓库的 DM , OLAP 都是为了分析与预测。为了让使用企业单位更好的把握现在,预测将来,因此他最实效的说法我认为是给决策者与管理者进行决策管理提供分析与预测的依据。
另外,数据仓库还会起到历史数据分类归档的目的(就像图书馆一样),届时可以通过检索条件方便的查询历史信息;而同类信息在 OLTP 中早已被更新了。
至于它的分析功能,就象气象考古研究工作,在不同深度的冰川中保存着当时的气象信息,否则拿什么预测气候变化趋势呢!
不过,要有相当的管理及技术储备以及管理层的强力支持才可以。先有需求,并具备了必要条件才可上马,否则您的数据仓库将不是超市而是个垃圾堆, “garbage in , then garbage out” !
所以,我认为是企业信息化建设及科学管理水平的提高催生了数据仓库的必然产生,不要赶时髦,炒概念,关键还是冷静分析自己企业的现实状况是否到了必须部署数据仓库的阶段了!
至于如何说服管理者,则需要您的努力了,不要站在您技术人员的立场阐述问题, CEO 对技术问题不感兴趣,站在他们的角度考虑问题,回答诸如 “ 我们投入如此大的资金、人力,同时面对升级系统的巨大风险,目的何在? ” 记住, CEO 和 CFO (甚至包括 CIO )是更希望用数字说话的,您分析一下公司的管理决策流程,就可以向他们提出很有价值的决策支持报表,而部门经理(或类似人员)每季度也不必头大的制作相关分析报表了,节省的精力可以做更多有价值的事情,这就是企业人力资源利用率的巨大提升,可以节省多少银子,恐怕 CEO 不会用你提示了吧!
以上就是关于数据库与数据仓库的本质区别是什么全部的内容,包括:数据库与数据仓库的本质区别是什么、数据仓库与 *** 作数据库有何联系和区别、数据仓库与SQL数据库有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)