1.2主要特点
面向主题:
*** 作型数据库组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。
主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通过与多个 *** 作型信息系统相关。
集成
需要对源数据进行加工与融合,统一与综合
在加工的过程中必须消除源数据的不一致性,以保证数据仓库内的信息时关于整个企业的一致的全局信息。(关联关系)
不可修改
DW中的数据并不是最新的,而是来源于其他数据源
数据仓库主要是为决策分析提供数据,涉及的 *** 作主要是数据的查询
与时间相关
处于决策的需要数据仓库中的数据都需要标明时间属性
1.3与数据库的对比
DW:专门为数据分析设计的,涉及读取大量数据以了解数据之间的关系和趋势
数据库:用于捕获和存储数据
特性 数据仓库 事务数据库
适合的工作负载 分析、报告、大数据 事务处理
数据源 从多个来源收集和标准化的数据 从单个来源(例如事务系统)捕获的数据
数据捕获 批量写入 *** 作通过按照预定的批处理计划执行 针对连续写入 *** 作进行了优化,因为新数据能够最大程度地提高事务吞吐量
数据标准化 非标准化schema,例如星型Schema或雪花型schema 高度标准化的静态schema
数据存储 使用列式存储进行了优化,可实现轻松访问和高速查询性能 针对在单行型物理块中执行高吞吐量写入 *** 作进行了优化
数据访问 为最小化I/O并最大化数据吞吐量进行了优化 大量小型读取 *** 作
2.数据分层
数据分层,每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上数据分为三个层:数据运营层、数据仓库层、数据服务层。基于这个基础分层之上,再提交信息的层次,来满足不同的业务需求。
2.1数据运营层(ODS)
ODS:Operation Data Store 数据准备区,也称为贴源层。数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,是后续数据仓库加工数据的来源。
ODS层数据的来源方式:
业务库
经常会使用sqoop来抽取,例如每天定时抽取一次。
实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。
埋点日志
日志一般以文件的形式保存,可以选择用flume定时同步
可以用spark streaming或者Flink来实时接入
kafka也OK
消息队列:即来自ActiveMQ、Kafka的数据等。
2.2数据仓库层(DW)
DW数据分层,由下到上为DWD,DWB,DWS。
DWD:data warehouse details 细节数据层,是业务层与数据仓库的隔离层。主要对ODS数据层做一些数据清洗和规范化的 *** 作。
数据清洗:去除空值、脏数据、超过极限范围的
DWB:data warehouse base 数据基础层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
DWS:data warehouse service 数据服务层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据层,一般是宽表。用于提供后续的业务查询,OLAP分析,数据分发等。
用户行为,轻度聚合
主要对ODS/DWD层数据做一些轻度的汇总。
2.3数据服务层/应用层(ADS)
ADS:applicationData Service应用数据服务,该层主要是提供数据产品和数据分析使用的数据,一般会存储在ES、mysql等系统中供线上系统使用。
我们通过说的报表数据,或者说那种大宽表,一般就放在这里
(1)为什么要分层
作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。
但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下图,在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。
因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:
1)清晰数据结构: 每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解;
2)减少重复开发: 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
3)统一数据口径: 通过数据分层,提供统一的数据出口,统一对外输出的数据口径;
4 )复杂问题简单化: 将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
为了满足前面提到好处,通常将数据模型分为三层:数据运营层( ODS )、数据仓库层(DW)和数据应用层(APP)。简单来讲,我们可以理解为:ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP是面向业务定制的应用数据。下面详细介绍这三层的设计。
(2)数据模型的分层
1)源数据层(ODS)
此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
2)数据仓库层(DW)
也称为细节层,DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
此层可以细分为三层:
明细层DWD(Data Warehouse Detail) :存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
中间层DWM(Data WareHouse Middle) :存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。
业务层DWS(Data WareHouse Service) :存储宽表数据,此层数据是针对某个业务领域的聚合数据,业务层的数据通常来源与此层,为什么叫宽表,主要是为了业务层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。
在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。
3)数据应用层(DA 或 APP)
前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。
4)维表层(Dimension)
最后补充一个维表层,维表层主要包含两部分数据:
A)高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
B)低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
(3)问题扩展
数据仓库系统架构
上图系统各部分的执行流程是:
1)确定分析所依赖的源数据。
2)通过ETL将源数据采集到数据仓库。
3)数据按照数据仓库提供的主题结构进行存储。
4)根据各部门的业务分析要求创建数据集市(数据仓库的子集)。
5)决策分析、报表等应用系统从数据仓库查询数据、分析数据。
6)用户通过应用系统查询分析结果、报表。
(4)结合项目中使用
电商网站的数据体系设计,这里针对用户访问日志这一部分数据进行举例说明:
在ODS层中,由于各端的开发团队不同或者各种其它问题,用户的访问日志被分成了好几张表上报到了我们的ODS层。
为了方便大家的使用,我们在DWD层做了一张用户访问行为天表,在这里,我们将PC网页、H5、小程序和原生APP访问日志汇聚到一张表里面,统一字段名,提升数据质量,这样就有了一张可供大家方便使用的明细表了。
在DWM层,我们会从DWD层中选取业务关注的核心维度来做聚合 *** 作,比如只保留人、商品、设备和页面区域维度。类似的,我们这样做很多个DWM的中间表。
然后在DWS层,我们将一个人在整个网站中的行为数据放到一张表中,这就是我们的宽表了,有了这张表,就可以快速满足大部分的通用型业务需求了。
最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。
一、摇篮和萌芽阶段:首先使用"DataBase"一词的是美国系统发展公司在为美国海军基地在60年代研制数据中引用。
1963年,C·W·Bachman设计开发的IDS(Integrate Data Store)系统开始投入运行,它可以为多个COBOL程序共享数据库。
1968年,网状数据库系统TOTAL等开始出现
1969年,IBM公司Mc Gee等人开发的层次式数据库系统的IMS系统发表,它可以让多个程序共享数据库。
1969年10月,CODASYL数据库研制者提出了网络模型数据库系统规范报告DBTG,使数据库系统开始走向规范化和标准化。
正因为如此,许多专家认为数据库技术起源于20世纪60年代末。
数据库技术的产生来源于社会的实际需要,而数据技术的实现必须有理论作为指导,系统的开发和应用又不断地促进数据库理论的发展和完善。
二、发展阶段:20世纪80年代大量商品化的关系数据库系统问世并被广泛的推广使用,既有适应大型计算机系统的,也有适用与中、小型和微型计算机系统的。
这一时期分布式数据库系统也走向使用。
1970年,IBM公司San Jose研究所的E ·F ·Code发表了题为"大型共享数据库的数据关系模型"论文,开创了数据库的关系方法和关系规范化的理论研究。
关系方法由于其理论上的完美和结构上的简单,对数据库技术的发展起了至关重要的作用,成功地奠定了关系数据理论的基石。
1971年,美国数据系统语言协会在正式发表的DBTG报告中,提出了三级抽象模式,即对应用程序所需的那部分数据结构描述的外模式,对整个客体系统数据结构描述的概念模式,对数据存储结构描述的内模式,解决了数据独立性的问题。
1974年,IBM公司San Jose研究所研制成功了关系数据库管理系统System R,并且投放到软件市场。
1976年,美籍华人陈平山提出了数据库逻辑设计的实际(体)联系方法。
1978年,新奥尔良发表了DBDWD报告,他把数据库系统的设计过程划分为四个阶段:需求分析、信息分析与定义、逻辑设计和物理设计。
1980年,J·D·Ulman所著的《数据库系统原理》一书正式出版。
1981年 E· F· Code获得了计算机科学的最高奖ACM图林奖。
1984年,David Marer所著的《关系数据库理论》一书,标志着数据库在理论上的成熟。
三、成熟阶段:80年代至今,数据库理论和应用进入成熟发展时期 易观国际发布《IT产品和服务-2007年中国数据库软件市场数据监测》,考察了中国数据库管理软件市场。
数据显示,中国商业数据库市场2007年度整体规模达到21.72亿人民币,比去年同期增长15%。
从厂商竞争格局来看,国际软件巨头占据市场的绝大多数份额。
Oracle、IBM、Microsoft和Sybase牢牢占据国内数据库软件市场前四位,拥有93.8%的市场份额。
国产数据库的市场份额在本季度继续提升,正在抓住国家提倡自主创新的机遇,以“有自主知识产权”的产品为契机,满足部委和地方 *** 的信息整合平台需求。
2008年,中国商业数据库市场整体规模达到了28.25亿元,比上个年度增长了30%,一方面,主要是因为中国电子政务建设的大幅增加,以及中国 *** 对版权的高度重视。
其中,Oracle占据了其中44%的市场份额,IBM占据了其中20%的份额、微软占据了18%的份额,Sybase占据了10%,而国产数据库因为在 *** 的支持下,已经占据了8%的市场份额,较2007年同比提升了25%。
其中,达梦数据库年销售额为6600万元,为国产数据库中市场份额最大的。
预计中国商业数据库市场在2009年达到31亿元的市场规模,同时,国产数据库在中国 *** 鼓励自主创新的基础下,会占据更大的市场份额。
另外,包括Mysql等开源数据库也占据了大量的 *** 及中小企事业用户,同时,盗版数据库更是占据了中国数据库市场的较大份额,其数值不亚于整个商业数据库的市场份额。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)