精华内容
下载资源
问答
  • 数据仓库基本知识

    万次阅读 多人点赞 2017-10-31 17:35:04
    数据仓库是什么 根据统计,每个企业的数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。 因此,企业仍然没有最大化地利用已存在的数据资源,以...
    
    

    数据仓库是什么

    根据统计,每个企业的数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。
    因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。
    于是,企业如何通过各种技术手段,并把数据转换为信息、知识避免各种无知状态和瞎猜行为,已经成了提高其核心竞争力的主要瓶颈。
    数据仓库是把数据转换为信息、知识的一种主要技术手段。
    数据仓库是面向分析的存储系统
    数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的数据集合。
    这些数据集合出于分析性报告和决策支持目的而创建,用于支持研究管理决策。
    一是为调查研究作数据支撑,二是为实现需要业务智能的企业,提供指导业务流程改进、监视时间、成本、量以及控制。
    数据仓库是一个过程而不是一个项目;数据仓库是一个环境,而不是一件产品。
    数据仓库提供用户用于决策支持的当前和历史数据,这些数据在传统的操作型数据库中很难或不能得到。

    [903014-20160322154102745-1726255952.jpg]


    目标和DEMO

    将联机事务处理(OLTP)经年累月所累积的大量数据资料,透过数据仓库理论所特有的资料储存架构,做数据的清理保存,提供给各种分析方法使用,如联机分析处理(OLAP)、数据挖掘(Data Mining),并进而创建 决策支持系统(DSS)、主管资讯系统(EIS)、研究支持系统,帮助决策者研究者快速有效的自大量资料中,分析出有价值的资讯,能够快速回应外在环境变动,帮助建构商业智能(BI),挖掘内部数据价值,产生更多高质量的内容。

    数据仓库给组织带来了巨大的变化。数据仓库的建立给企业带来了一些新的工作流程,其他的流程也因此而改变。

    数据仓库为企业带来了一些“以数据为基础的知识”,它们主要应用于对市场战略的评价,和为企业发现新的市场商机,同时,也用来控制库存、检查生产方法和定义客户群。

    通过数据仓库,可以建立企业的数据模型,这对于企业的生产与销售、成本控制与收支分配有着重要的意义,极大的节约了企业的成本,提高了经济效益,同时,用数据仓库可以分析企业人力资源与基础数据之间的关系,可以用于返回分析,保障人力资源的最大化利用,亦可以进行人力资源绩效评估,使得企业管理更加科学合理。数据仓库将企业的数据按照特定的方式组织,从而产生新的商业知识,并为企业的运作带来新的视角。

    国外知名的Garnter关于数据集市产品报告中,位于第一象限的敏捷商业智能产品有QlikView, Tableau和SpotView,都是全内存计算的数据集市产品,在大数据方面对传统商业智能产品巨头形成了挑战。

    国内BI产品起步较晚,知名的敏捷型商业智能产品有PowerBI, 永洪科技的Z-Suite,SmartBI,FineBI商业智能软件等,其中永洪科技的Z-Data Mart是一款热内存计算的数据集市产品。

    国内的德昂信息也是一家数据集市产品的系统集成商。

    [v2-da8260eae1a66096e3b61cd598b06596_hd.png]

    [v2-da8260eae1a66096e3b61cd598b06596_hd.png]

    阿里数加
    https://data.aliyun.com/


    数据仓库的特点

    数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合

    1、面向主题

    操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。

    2、集成的

    数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。

    3、相对稳定的

    数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。

    4、反映历史变化

    数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。

    5、效率足够高
    数据仓库的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。


    数据仓库技术

    数据仓库技术是为了有效的把操作形数据集成到统一的环境中以提供决策型数据访问的各种技术和模块的总称。所做的一切都是为了让用户更快更方便查询所需要的信息,提供决策支持。

    从功能结构划分,数据仓库系统至少应该包含数据获取(Data Acquisition)、数据存储(Data Storage)、数据访问(Data Access)三个关键部分。

    数据获取

    数据源

    数据源是数据仓库系统的基础,是整个系统的数据源泉。通常包括企业内部信息和外部信息。内部信息包括存放于RDBMS中的各种业务处理数据和各类文档数据。外部信息包括各类法律法规、市场信息和竞争对手的信息等等;

    元数据

    对业务数据本身及其运行环境的描述与定义的数据,称之为元数据(metadata)。 元数据是描述数据的数据。 元数据的典型表现为对象的描述,即对数据库、表、列、列属性(类型、格式、约束等)以及主键/外部键关联等等的描述。 特别是现行应用的异构性与分布性越来越普遍的情况下,统一的元数据就愈发重要了。“信息孤岛”曾经是很多企业对其应用现状的一种抱怨和概括,而合理的元数据则会有效地描绘出信息的关联性。 而元数据对于ETL的集中表现为:定义数据源的位置及数据源的属性、确定从源数据到目标数据的对应规则、确定相关的业务逻辑、在数据实际加载前的其他必要的准备工作,等等,它一般贯穿整个数据仓库项目,而ETL的所有过程必须最大化地参照元数据,这样才能快速实现ETL。

    数据转换工具

    1)数据转换工具要能从各种不同的数据源中读取数据。 2)支持平面文件、索引文件、和legacyDBMS。 3)能以不同类型数据源为输入整合数据。 4)具有规范的数据访问接口 5)最好具有从数据字典中读取数据的能力 6)工具生成的代码必须是在开发环境中可维护的 7)能只抽取满足指定条件的数据,和源数据的指定部分 8)能在抽取中进行数据类型转换和字符集转换 9)能在抽取的过程中计算生成衍生字段 10)能让数据仓库管理系统自动调用以定期进行数据抽取工作,或能将结果生成平面文件 11)必须对软件供应商的生命力和产品支持能力进行仔细评估 主要数据抽取工具供应商:Prismsolutions. Carleton'sPASSPORT. InformationBuildersInc.'s EDA/SQL. SASInstituteInc.

    数据清洗ETL

    ETL分别代表:提取extraction、转换transformation、加载load。

    其中提取过程表示操作型数据库搜集指定数据,转换过程表示将数据转化为指定格式并进行数据清洗保证数据质量,加载过程表示将转换过后满足指定格式的数据加载进数据仓库。

    数据仓库会周期不断地从源数据库提取清洗好了的数据,因此也被称为"目标系统";

    实现ETL,首先要实现ETL转换的过程。体现为以下几个方面:
    1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
    2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
    3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
    4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
    5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
    6、Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
    7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

    根据以往数据仓库项目的经验,在一个数据仓库项目中,ETL设计和实施的工作量一般要占总项目工作量的40%-60%,而且数据仓库项目一般会存在二次需求的问题,客户在项目的实施过程中或者使用过程中会提出新的业务需求,而任何前端业务模型的改变都会涉及到ETL设计,因此ETL工具的选择对于整个数据仓库项目的成功是非常重要的。

    选型

    ETL工具的典型代表有:Informatica powercenter、Datastage、Oracle OWB(oracle warehouse builder)、ODI、微软DTS、Beeload、Kettle、Talend 、DataSprider、Spark、等等……

    开源的工具有eclipse的etl插件:CloverETL和Octupus

    在购买现成的工具之外,还有自己从头开发ETL程序的。

    ETL工作看起来并不复杂,特别是在数据量小、没有什么转换逻辑的时候,自己开发似乎非常节省成本。的确,主流的ETL工具价格不菲,动辄几十万;而从头开发无非就是费点人力而已,可以控制。至于性能,人大多是相信自己的,认为自己开发出来的东西知根知底,至少这些程序可以完全由自己控制。

    就目前自主开发的ETL程序而言,有人用c语言编写,有人用存储过程,还有人用各种语言混杂开发,程序之间各自独立。这很危险,虽然能够让开发者过足编码的瘾,却根本不存在架构。

    有位银行的朋友,他们几年前上的数据仓库系统,就是集成商自己用c语言专门为他们的项目开发的。单从性能上看似乎还不赖,然而一两年下来,项目组成员风雨飘零,早已物是人非,只有那套程序还在那里;而且,按照国内目前的软件工程惯例,程序注释和文档是不全或者是不一致的,这样的程序已经对日常业务造成很大阻碍。最近,他们已经开始考虑使用ETL工具重新改造了。

    扩展阅读

    数据仓库项目应该如何选择ETL工具:ETL or E-LT? http://blog.csdn.net/mengdebin/article/details/41151533

    ETL构建企业级数据仓库五步法
    http://blog.csdn.net/xcbsdu/article/details/6637775

    数据存储

    数据集市(Data Marts)

    为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subjectarea)。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的就是再实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。

    数据仓库管理

    安全和特权管理;跟踪数据的更新;数据质量检查;管理和更新元数据;审计和报告数据仓库的使用和状态;删除数据;复制、分割和分发数据;备份和恢复;存储管理。

    选型

    在大数据时代,数据仓库的重要性更胜以往。Hadoop平台下的Hive,Spark平台下的Spark SQL都是各自生态圈内应用最热门的配套工具,而它们的本质就是开源分布式数据仓库。

    在国内最优秀的互联网公司里(如阿里、腾讯),很多数据引擎是架构在数据仓库之上的(如数据分析引擎、数据挖掘引擎、推荐引擎、可视化引擎等等)。不少员工认为,开发成本应更多集中在数据仓库层,不断加大数据建设的投入。因为一旦规范、标准、高性能的数据仓库建立好了,在之上进行数据分析、数据挖掘、跑推荐算法等都是轻松惬意的事情。
    反之如果业务数据没梳理好,各种脏乱数据会搞得人焦头烂额,苦不堪言。

    数据访问

    数据仓库通常需要提供具有直接访问数据仓库功能的前端应用,这些应用也被称为BI(商务智能)应用

    有数据查询和报表工具

    应用开发工具

    经理信息系统(EIS)工具

    联机分析处理(OLAP)工具

    数据仓库建设好以后,用户就可以编写SQL语句对其进行访问并对其中数据进行分析。但每次查询都要编写SQL语句的话,未免太麻烦,而且对维度建模数据进行分析的SQL代码套路比较固定。

    于是,便有了OLAP工具,它专用于维度建模数据的分析。而BI工具则是能够将OLAP的结果以图表的方式展现出来,它和OLAP通常出现在一起。(注:本文所指的OLAP工具均指代这两者。)

    这种情况下,OLAP不允许访问中心数据库。一方面中心数据库是采取规范化建模的,而OLAP只支持对维度建模数据的分析;另一方面规范化数据仓库的中心数据库本身就不允许上层开发人员访问。而在维度建模数据仓库中,OLAP/BI工具和数据仓库的关系则是这样的:

    在维度建模数据仓库中,OLAP不但可以从数据仓库中直接取数进行分析,还能对架构在其上的数据集市群做同样工作。

    数据挖掘工具。

    信息发布系统

    把数据仓库中的数据或其他相关的数据发送给不同的地点或用户。基于Web的信息发布系统是对付多用户访问的最有效方法。

    数据可视化选型

    你想知道的经典图表全在这
    https://zhuanlan.zhihu.com/p/24168144

    R语言
    http://www.cnblogs.com/muchen/p/5332359.html

    pentaho

    FineBI

    PowerBI
    http://www.cnblogs.com/muchen/p/5389960.html

    http://www.cnblogs.com/muchen/p/5391101.html

    深入浅出BI
    https://zhuanlan.zhihu.com/p/24573880

    [903014-20160328190120316-616433149.jpg]

    [903014-20160328185819613-1426949688.jpg]


    案例

    facebook的ppt上了解到的是他们在hive上做大数据量的分析,计算结果放到oracle上做BI展示和计算 hadoop MR or hive上ETL计算完的结果表,同步到oracle中,连接传统BI工具,呈现报表,阿里、腾讯、盛大都是这样的

    [v2-3e6958278b96043f5a2379778054deae_hd.png]


    与传统数据库的对比

    企业的数据处理大致分为两类:
    一类是操作型处理,也称为联机事务处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
    另一类是分析型处理,一般针对某些主题的历史数据进行分析,支持管理决策。

    数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

    数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

    举个最常见的例子,拿电商行业来说好了。基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。

    电商早期启动非常容易,入行门槛低。找个外包团队,做了一个可以下单的网页前端 + 几台服务器 + 一个MySQL,就能开门迎客了。这好比手工作坊时期。

    第二阶段,流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。初步进入工业化。

    第三个阶段,一般需要 3-5 年左右的时间,随着业务指数级的增长,数据量的会陡增,公司角色也开始多了起来,开始有了 CEO、CMO、CIO,大家需要面临的问题越来越复杂,越来越深入。

    高管们关心的问题,从最初非常粗放的:“昨天的收入是多少”、“上个月的 PV、UV 是多少”,逐渐演化到非常精细化和具体的用户的集群分析,特定用户在某种使用场景中,例如“20~30岁女性用户在过去五年的第一季度化妆品类商品的购买行为与公司进行的促销活动方案之间的关系”。这类非常具体,且能够对公司决策起到关键性作用的问题,基本很难从业务数据库从调取出来。

    原因在于:业务数据库中的数据结构是为了完成交易而设计的,不是为了而查询和分析的便利设计的。

    业务数据库大多是读写优化的,即又要读(查看商品信息),也要写(产生订单,完成支付)。

    因此对于大量数据的读(查询指标,一般是复杂的只读类型查询)是支持不足的。而怎么解决这个问题,此时我们就需要建立一个数据仓库了,公司也算开始进入信息化阶段了。

    数据仓库的作用在于:数据结构为了分析和查询的便利;只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。

    那么在这里前一种业务数据库(读写都优化)的是业务性数据库,后一种是分析性数据库,即数据仓库。

    最后总结一下:
    数据库 比较流行的有:MySQL, Oracle, SqlServer等
    数据仓库 比较流行的有:AWS Redshift, Greenplum, Hive等。
    这样把数据从业务性的数据库中提取、加工、导入分析性的数据库就是传统的 ETL 工作。

    数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。
    为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
    1.效率足够高。
    2.数据质量。
    3.扩展性。

    两类数据库的不同点:

    1.数据组成差别 - 数据时间范围差别

    一般来讲,操作型数据库只会存放90天以内的数据,而分析型数据库存放的则是数年内的数据。这点也是将操作型数据和分析型数据进行物理分离的主要原因。

    2.数据组成差别 - 数据细节层次差别

    操作型数据库存放的主要是细节数据,而分析型数据库中虽然既有细节数据,又有汇总数据,但对于用户来说,重点关注的是汇总数据部分。

    操作型数据库中自然也有汇总需求,但汇总数据本身不存储而只存储其生成公式。这是因为操作型数据是动态变化的,因此汇总数据会在每次查询时动态生成。

    而对于分析型数据库来说,因为汇总数据比较稳定不会发生改变,而且其计算量也比较大(因为时间跨度大),因此它的汇总数据可考虑事先计算好,以避免重复计算。

    3.数据组成差别 - 数据时间表示差别

    操作型数据通常反映的是现实世界的当前状态;而分析型数据库既有当前状态,还有过去各时刻的快照,分析型数据库的使用者可以综合所有快照对各个历史阶段进行统计分析。

    4.技术差别 - 查询数据总量和查询频度差别

    操作型查询的数据量少而频率多,分析型查询则反过来,数据量大而频率少。要想同时实现这两种情况的配置优化是不可能的,这也是将两类数据库物理分隔的原因之一。

    5.技术差别 - 数据更新差别

    操作型数据库允许用户进行增,删,改,查;分析型数据库用户则只能进行查询。

    6.技术差别 - 数据冗余差别

    数据的意义是什么?就是减少数据冗余,避免更新异常。而如5所述,分析型数据库中没有更新操作。因此,减少数据冗余也就没那么重要了。

    例如Hive是一种数据仓库,而数据仓库和分析型数据库的关系非常紧密。它只提供查询接口,不提供更新接口,这就使得消除冗余的诸多措施不需要被特别严格地执行了,可以保留冗余。

    7.功能差别 - 数据读者差别

    操作型数据库的使用者是业务环境内的各个角色,如用户,商家,进货商等;分析型数据库则只被少量用户用来做综合性决策。

    8.功能差别 - 数据定位差别

    这里说的定位,主要是指以何种目的组织起来。操作型数据库是为了支撑具体业务的,因此也被称为"面向应用型数据库";分析型数据库则是针对各特定业务主题域的分析任务创建的,因此也被称为"面向主题型数据库"。
    [4abe15bd7b3bcbc10f6b3846951b16d9_hd.jpg]


    怎么做

    1)收集和分析业务需求 确定指标

    基础数据的架构

    关键问题
    一般问题 (不完全是技术或文化,但很重要) 包括但不限于以下几点:
    业务用户想要执行什么样的分析?
    你现在收集的数据需要支持那些分析吗?
    数据在哪儿?
    数据清洗范围
    数据的清洁度如何?
    相似的数据有多个数据源吗?
    什么样的结构最适合核心数据仓库 (例如维度或关系型)?
    技术问题包括但不限于以下几点:
    在你的网络中要流通多少数据?它能处理吗?
    需要多少硬盘空间?
    硬盘存储需要多快?
    你会使用固态还是虚拟化的存储?

    2)建立数据模型和数据仓库的物理设计
    3)定义数据源
    4)选择数据仓库技术和平台
    5)从操作型数据库中抽取、净化、和转换数据到数据仓库–ETL依照模型进行初始加载、增量加载、缓慢增长维、慢速变化维、事实表加载等数据集成
    6)选择访问和报表工具
    7)选择数据库连接软件
    8)选择数据分析和数据展示软件
    9)更新数据仓库–并根据业务需求制定相应的加载策略、刷新策略、汇总策略、维护策略。

    较之数据库系统开发,数据仓库开发只多出ETL工程部分。然而这一部分极有可能是整个数据仓库开发流程中最为耗时耗资源的一个环节。
    因为该环节要整理各大业务系统中杂乱无章的数据并协调元数据上的差别,所以工作量很大。在很多公司都专门设有ETL工程师这样的岗位,大的公司甚至专门聘请ETL专家。

    [903014-20160322160747995-1497680833.jpg]

    展开全文
  • 数据仓库基本特征

    千次阅读 2019-12-04 23:01:45
    基本概念 数据仓库,简称数仓,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。只有一个存在的必要:分析。 数据仓库是存数据...

    数据仓库

    基本概念

    数据仓库,简称数仓,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。只有一个存在的必要:分析。

    数据仓库是存数据的,企业的各种数据往里面存,主要目的是为了分析有效数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表等。

    可以理解为:面向分析的存储系统

    主要特征

    数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant )数据集合,用以支持管理决策。

    面向主题

    数据仓库是面向主题的,数据仓库通过一个个主题域将多个业务系统的数据加载到一起,为了各个主题(如:用户、订单、商品等)进行分析而建,操作型数据库是为了支撑各种业务而建立。

    集成性

    数据仓库会将不同源数据库中的数据汇总到一起,数据仓库中的综合数据不能从原有的数据库系统直接得到。因此在数据进入数据仓库之前,必然要经过统一与整合,这一步是数据仓库建设中最关键、最复杂的一步(ETL),要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致,等等。

    稳定性

    操作型数据库主要服务于日常的业务操作,使得数据库需要不断地对数据实时更新,以便迅速获得当前最新数据,不至于影响正常的业务运作。

    在数据仓库中只要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据商业需要每隔一段时间把一批较新的数据导入数据仓库。
    数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库的集合,以及基于这些快照进行统计、综合和重组的导出数据。数据仓库中的数据一般仅执行查询操作,很少会有删除和更新。但是需定期加载和刷新数据。

    反应历史变化的

    数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要定时更新,以适应决策的需要。

    数据库与数据仓库的区别

    数据库与数据仓库的区别实际讲的是 OLTPOLAP 的区别。

    操作型处理,叫联机事务处理 OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

    分析型处理,叫联机分析处理 OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持 管理决策。

    首先要明白,数据仓库的出现,并不是要取代数据库。

    • 数据库是面向事务的设计,数据仓库是面向主题设计的。
    • 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
    • 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
    • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

    数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。

    数仓的分层架构

    按照数据流入流出的过程,数据仓库架构可分为三层——源数据、数据仓库、数据应用。
    在这里插入图片描述
    数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自下而上流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台。

    • 源数据层(Operational Data Store 简写ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。主要目的从业务库/业务层的数据抽取到ods作为可操作的数据存储层。

    • 数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

      还可以细分

      大致理解dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总?

      dwd层 :data warehouse detail 数据仓库明细层 那所有的业务数据标准化之后的数据,所有的明细数据。是业务层与数据仓库的隔离层

      DWB:data warehouse base 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。

      DWS:data warehouse service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。

    • 数据应用层(DA或APP):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。

    数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定

    为什么要对数据仓库分层?

    1、空间换时间
    中间数据存储起来
    2、便于计算
    3、逻辑清晰
    每层都有特定功能

    通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

    1、用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据;

    2、通过分层管理来实现分步完成工作,这样每一层的处理逻辑就简单了

    标准的数据仓库分层:ods(临时存储层),pdw(数据仓库层),mid(数据集市层),app(应用层)

    3、把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

    4、便于处理业务的变化。随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知;不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。

    讲的更细的说明

    • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
    • 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
    • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
    • 把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
    • 屏蔽原始数据的异常。
    • 屏蔽业务的影响,不必改一次业务就需要重新接入数据。

    数据体系中的各个表的依赖就像是电线的流向一样,我们都希望它是规整、流向清晰、便于管理的,如下图:
    在这里插入图片描述

    但是,最终的结果大多却是依赖复杂、层级混乱,想梳理清楚一张表的声称途径会比较困难,如下图:
    在这里插入图片描述
    数据仓库的分层
    为什么分层:

    业务数据库(mysql和mongodb oracle数据源)

    ODS(可操作数据层) —— hive greenplum
    原始业务数据缓存
    业务的原始明细数据

    DW (数据仓库层)
    DWD层 数据明细层
    负责数据的最细粒度的数据
    经过了ODS层的清洗(去空)、去重、去噪、去除大于或者小于一定阈值的明细数据

    DWM层 数据中间层
    在DWD层基础上,进行轻度汇总,结合常用维度(时间、地点、组织层级、用户、商品等)

    DWS层 数据汇总层 (宽表)
    面向主题的汇总,维度相对来说比较少
    电商为例,以人这个主题。人(用户):当前人登陆次数、浏览次数、购买次数、访问频度等。

    DAS (数据应用服务层)
    业务主题,提供业务应用的数据准备,可复用性比较低的。

    明细表 => 汇总表
    select deptId,count(1)
    group by deptId

    宽表 => 基于主题

    数仓的元数据管理

    元数据(Meta Date),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL的任务运行状态。一般会通过元数据资料库(Metadata Repository)来统一地存储和管理元数据,其主要目的是使数据仓库的设计、部署、操作和管理能达成协同和一致。

    元数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。

    • 构建数据仓库的主要步骤之一是ETL。这时元数据将发挥重要的作用,它定义了源数据系统到数据仓库的映射、数据转换的规则、数据仓库的逻辑结构、数据更新的规则、数据导入历史记录以及装载周期等相关内容。数据抽取和转换的专家以及数据仓库管理员正是通过元数据高效地构建数据仓库。
    • 用户在使用数据仓库时,通过元数据访问数据,明确数据项的含义以及定制报表。
    • 数据仓库的规模及其复杂性离不开正确的元数据管理,包括增加或移除外部数据源,改变数据清洗方法,控制出错的查询以及安排备份等。
      在这里插入图片描述
      元数据可分为技术元数据和业务元数据。技术元数据为开发和管理数据仓库的IT 人员使用,它描述了与数据仓库开发、管理和维护相关的数据,包括 度描述数据,包括商务术语、数据仓库中有什么数据、数据的位置和数据的可用性等,帮助业务人员更好地理解数据仓库中哪些数据是可用的以及如何使用。

    由上可见,元数据不仅定义了数据仓库中数据的模式、来源、抽取和转换规则等,而且是整个数据仓库系统运行的基础,元数据把数据仓库系统中各个松散的组件联系起来,组成了一个有机的整体

    展开全文
  • 数据仓库基本理论

    千次阅读 2019-08-01 10:58:36
    关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性,目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。...

    1、关系模式范式

    1.1 范式理论概述

    关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性,目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。

    范式的标准定义是:符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度。通俗地讲,范式可以理解为一张数据表的表结构所符合的某种设计标准的级别。

    使用范式的根本目的是:减少数据冗余,尽量让每个数据只出现一次**,获取数据时通过 join 拼接出最后的数据**。

    1.2 范式基本概念

    学号 姓名 系名 系主任 课名 分数
    20170901176 王小强 计算机系 马小腾 C 语言 95
    20170901176 王小强 计算机系 马小腾 计算机基础 99
    20170901176 王小强 计算机系 马小腾 高等数学 80
    20170901179 李阳 经管系 王小石 经济学 95
    20170901179 李阳 经管系 王小石 管理学 92
    20170901186 张小俊 数学系 钱小森 高等数学 89
    20170901186 张小俊 数学系 钱小森 线性代数 96
    • ① 函数依赖

    若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值, 那么就可以说 Y 函数依赖于 X,写作 X → Y。

    表中其他的函数依赖关系还有如: 系名 → 系主任 ; 学号 → 系主任;(学号,课名) → 分数。
    以下函数依赖关系则不成立: 学号 → 课名;学号 → 分数课名 → 系主任;(学号,课名) → 姓名。

    • ② 完全函数依赖

    在一张表中,若 X → Y,且对于 X 的任何一个真子集X '(假如属性组 X 包含超过一个属性的话),X ’ → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记做:
    在这里插入图片描述
    例如:学号 F→ 姓名 ;(学号,课名) F→ 分数。

    • ③ 部分函数依赖

    假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记做:
    在这里插入图片描述
    简单来说,(学号,课名)→ 系名;学号 → 系名;那么(学号,课名)p→ 系名。

    • ④ 传递函数依赖

    假如 Z 函数依赖于 Y,且 Y 函数依赖于 X ,且 Y 不包含于 X,X 不函数依赖于 Y,那么我们就称 Z 传递函数依赖于 X,记做:
    在这里插入图片描述
    简单来说,系名 → 系主任,学号 → 系名,那么学号 T→ 系主任。

    1.3 常见范式

    1. 一范式(1NF):域应该是原子性的,即数据库表的每一列都是不可分割的原子数据项(属性不可分割):就是列的取值范围,比如性别的域就是(男,女)。 1NF 是所有关系型数据库的最基本要求。

    2. 二范式(2NF):在 1NF 的基础上,实体的属性完全函数依赖于主关键字(唯一性), 不能存在部分函数依赖于主关键字(混合主键)。如果存在某些属性只依赖混合主键中的部分属性,那么不符合二范式。为了消除这种部分依赖,只有一个办法,就是将大数据表拆分成两个或者更多个更小的数据表

    3. 三范式(3NF): 3NF 在 2NF 的基础之上,消除了非主属性对于主键(复合主键)的传递依赖

    所谓的范式,是用来学习参考的,设计的时候根据情况,未必一定要遵守,切记。
    数据库三大范式通俗解释:https://blog.csdn.net/q957967519/article/details/81910547

    2、数据仓库建模基本理论

    2.1 数据仓库建模目标

    数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。

    1.访问性能:能够快速查询所需的数据,减少数据 I/O;
    2.数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的数据成本和计算成本;
    3.使用效率:改善用户应用体验,提高使用数据的效率;
    4.数据质量:整合所有数据源的数据,改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台。

    上述的四点之间是存在冲突的,为了提高访问性能,可能会提高数据冗余(减少 Join), 这样会降低计算成本,但是会导致数据存储成本很高,并且由于数据的冗余,会提高数据统计口径不一致的风险,我们的目的是通过合理的设计在性能、成本、效率和数据质量之间找到平衡点

    2.2 E-R 实体模型

    2.2.1 基本理论

    ER 模型是数据库设计的理论基础,当前几乎所有的 OLTP 系统设计都采用 ER 模型建模的方式。
    在信息系统中,将事物抽象为“实体”、“属性”、“关系”来表示数据关联和事物描述;其中,实体:Entity,关系:Relationship,这种对数据的抽象建模通常被称为 ER 实体关系模型。

    1.实体:通常为参与到过程中的主体,客观存在的,比如商品、仓库、货位、汽车,此实体非数据库的实体表。
    2.属性对主体的描述、修饰即为属性,比如商品的属性有商品名称、颜色、尺寸、重量、产地等。
    3.关系:现实的物理事件是依附于实体的,比如商品入库事件,依附实体商品、货位, 就会有“库存”的属性产生;用户购买商品,依附实体用户、商品,就会有“购买数量”、 “金额”的属性产品。

    2.2.2 实体之间的对照关系

    实体之间建立关系时,存在对照关系:

    • 1:1,即 1 对 1 的关系,比如实体人、身份证,一个人有且仅有一个身份证号;(A->B: 相互完全依赖,知道 A 一定确定 B,知道 B 一定确定 A)。(动静分离:在数据库设计时,会将动态属性(年龄、地址、偏好、…)和静态属性(姓名、性别、身份证号、…)进行分离,剥离为两张表,一张父表,一张子表,从而提高性能)。
    • 1:n,即 1 对多的关系,比如实体学生、班级,对于某 1 个学生,仅属于 1 个班级,而在 1
      个班级中,可以有多个学生;(一张学生表,一张班级表,通过班级 ID 这个外键进行关联)。
    • n:m,即多对多的关系,比如实体学生、课程,每个学生可以选修多门课程,同样每个课程也可以被多门学生选修;(一张学生表,一张课程表,一张选课表)。

    2.2.3 ER 建模的图形表示

    在日常建模过程中:
    “实体”:使用矩形表示;
    “关系”:使用菱形表示;
    “属性”:使用椭圆形表示;
    所以 ER 实体关系模型也称作 E-R 关系图

    2.2.4 ER实体建模实例

    1.场景
    学生选课系统,该系统主要用来管理学生和选修课程,其中包括课程选修、学生管理功能,现需要完成数据库逻辑模型设计。
    2.实现步骤
    ①.抽象出主体 —— 学生,课程;
    ②.梳理主体之间的关系 —— 选修;(学生与选修课程是一个多对多的关系)
    ③.梳理主体的属性;
    ④.画出 E-R 关系图;
    在这里插入图片描述

    2.3 维度模型

    维度建模的理论由 Ralph Kimball 提出,他提出将数据仓库中的表划分为事实表和维度表两种类型
    维度建模源自数据集市,主要面向分析场景
    ① “事实表”,用来存储事实的度量(measure)及指向各个维的外键值。
    ② “维度表”,用来保存该维的元数据,即维的描述信息,包括维的层次及成员类别等。

    简单的说,维度表就是你观察该事物的角度(维度),事实表就是你要关注的内容。例如用户使用滴滴打车,那么打车这件事就可以转化为一个事实表,即打车订单事实表,然后用户对应一张用户维度表,司机对应一张司机维度表。
    维度模型

    2.3.1 事实表往往包含三个重要元素:

    - 1.维度表外键
    - 2.度量数据
    - 3.事件描述信息

    例如在电商场景中的一次购买事件,涉及主体包括客户、商品、商家,产生的可度量值包括商品数量、金额、件数等。
    在这里插入图片描述

    2.3.2 维度表

    每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。
    在这里插入图片描述
    如上图商品维度表,单一主键为商品 ID,属性包括颜色、尺寸、单价、生产商等,但并非属性一定是文本,比如单价、尺寸,均为数值型描述性的,日常主要的维度抽象包括:时间维度表、地理区域维度表等

    综上所述,如果针对用户的下单行为(单一商品)进行维度建模,我们可以得到如下模型:
    维度建模实例

    2.4 建模方法总结

    ER 模型以及维度模型是当前主流的建模方法。

    ER 模型常用于 OLTP 数据库建模,应用到构建数仓时更偏重数据整合,站在企业整体考虑,将各个系统的数据按相似性、一致性合并处理,为数据分析、决策服务,但并不便于直接用来支持分析

    ER 模型的特点如下:

    1. 需要全面梳理企业所有的业务和数据流。
    2. 实施周期长。
    3. 对建模人员要求高。

    维度建模是面向分析场景而生,针对分析场景构建数仓模型;重点关注快速、灵活的解决分析需求,同时能够提供大规模数据的快速响应性能。针对性强,主要应用于数据仓库构建和 OLAP 引擎低层数据模型

    维度建模的特点如下:

    1. 不需要完整的梳理企业业务流程和数据;
    2. 实施周期根据主题边界而定,容易快速实现 demo 。

    2.5 星型模式、雪花模式与星座模式

    2.5.1 星型模式

    星型模式是维度模型中最简单的形式,也是数据仓库以及数据集市开发中使用最广泛的形式。

    星型模式由事实表和维度表组成,一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表。星型模式的物理模型像一颗星星的形状,中心是一个事实表, 围绕在事实表周围的维度表表示星星的放射状分支,这就是星型模式这个名字的由来。星型模式将业务流程分为事实和维度。事实包含业务的度量,是定量的数据,如销售价格、销售数量、距离、速度、重量等是事实。维度是对事实数据属性的描述,如日期、产品、客户、地理位置等是维度。一个含有很多维度表的星型模式有时被称为蜈蚣模式,显然这个名字也是因其形状而得来的。蜈蚣模式的维度往往只有很少的几个属性,这样可以简化对维度表的维护,但查询数据时会有更多的表连接,严重时会使模型难于使用,因此在设计中应该尽量避免蜈蚣模式
    星型模式

    2.5.2 雪花模式

    雪花模式是一种多维模型中表的逻辑布局,其实体关系图有类似于雪花的形状,因此得名。

    与星型模式相同,雪花模式也是由事实表和维度表所组成。所谓的“雪花化”就是将星型模型中的维度表进行规范化处理。当所有的维度表完成规范化后,就形成了以事实表为中心的雪花型结构,即雪花模式。

    将维度表进行规范化的具体做法是,把低基数的属性从维度表中移除并形成单独的表。基数指的是一个字段中不同值的个数,如主键列具有唯一值, 所以有最高的基数,而像性别这样的列基数就很低。

    在雪花模式中,一个维度被规范化成多个关联的表,而在星型模式中,每个维度由一个单一的维度表所表示。一个规范化的维度对应一组具有层次关系的维度表,而事实表作为雪花模式里的子表,存在具有层次关系的多个父表。
    雪花模式

    2.5.3 星座模式

    数据仓库由多个主题构成,包含多个事实表,而维表是公共的,可以共享,这种模式可以看做星型模式的汇集,因而称作星系模式或者事实星座模式。
    在这里插入图片描述

    2.6 模式的选择

    在数据仓库建模时,会涉及到模式的选择,我们要根据不同模式的特点选择适合具体业务的模式:

    1.冗余雪花模型符合业务逻辑设计,采用 3NF 设计,有效降低数据冗余;星型模型的维度表设计不符合 3NF(如果是雪花模型改造成了星型模型,那么肯定不符合3NF,因为一定发生了表的整合,即降维,一定有传递依赖,但是**,并不是所有的星型模型都不符合 3NF**,很多星型模型的表是符合 3NF 的),反规范化,维度表之间不会直接相关,牺牲部分存储空间。
    2. 性能雪花模型由于存在维度间的关联,采用 3NF降低冗余,通常在使用过程中,需要连接更多的维度表,导致性能偏低;星型模型反三范式,采用降维的操作将维度整合,以存储空间为代价有效降低维度表连接数,性能较雪花模型高。( 星型表的数据冗余大,是用存储空间换取效率 )( BI 的一些工具对于星型模型的支持更规范化 )。
    3. ETL雪花模型符合业务 ER 模型设计原则,在 ETL 过程中相对简单,但是由于附属模型的限制,ETL 任务并行化较低(由于雪花模型中有很多的维度依赖,在 ETL 的时候, 需要在保持 3NF 的前提下对数据进行清洗,即对数据一致性/规范化的处理,例如数据来自于多个业务系统,各个系统对于用户的定义不一致,此时要对每个业务定义的用户数据进行规范化处理,在 3NF 的限制下必然会降低并行度);星型模型在设计维度表时反范式设计, 所以在 ETL 过程中整合业务数据到维度表有一定难度,但由于避免附属维度,可并行化处理(不用关注太多的关联关系,避免了维度表之间的关联关系,并行度较高,注意,一般场景下星型模型的并行化程度更高,并不是所有场景)。

    Hive 的分析通过 MapReduce 实现,每多一个 Join 就会多出一个 MapReduce 过程,对于雪花模型,由于存在着很多维度表之间的关联,这就会导致一次分析对应多个 MapReduce 任务,而星型模型由于不存在维度表的关联,因此一个 MapReduce 就可以实现分析任务
    MapReduce 本身是一个支持高吞吐量的任务,它的每个任务都要申请资源、分配容器、节点通信等待,需要 YARN 的调度,由于相互关联的维度表本身会很小,join 操作用时很少,YARN 调度的时长可能都大于实际运算的时长,因此我们要尽可能减少任务个数对于 Hive 来说就是尽可能减少不必要的表的关联。还有一点,雪花模型中拆分出的维度表,每个表对应至少一个文件,这就涉及到 I/O 方面的性能损耗

    因此,我们要采用适当的数据冗余,避免不必要的表之间的关联。

    在实际项目中,不会刻意地去考虑雪花模型,而是刻意地去考虑星型模型,特别是大数据领域的建模,倾斜于使用数据冗余来提高查询效率,倾向于星型模型;雪花模型只会应用在一些我们要求模型的灵活性,要求保证模型本身稳定性的场景下,但是雪花模型并不是首选

    展开全文
  • 数据仓库基本概念介绍

    千次阅读 2019-02-22 18:40:28
    1、数据仓库所处环节 操作层  数据仓库 数据集市 个体层 2、数据仓库概念 面向主题的  集成的 随时间变化的 非易失的 3、一般架构 STAGE层  ODS层 MDS层 ADS层  DIM层 ETL调度系统 元数据管理...

    目录

    1、数据仓库所处环节

    操作层       

    数据仓库

    数据集市

    个体层

    2、数据仓库概念

    面向主题的       

    集成的

    随时间变化的

    非易失的

    3、一般架构

    STAGE层

     ODS层

    MDS层

    ADS层

     DIM层

    ETL调度系统

    元数据管理系统

    4、设计的两个重要问题

    1、 粒度

    2、 分区


    1、数据仓库所处环节

           在一个成体系、结构化的数据应用场景下,数据和处理有四个层次: 操作层、数据仓库层、部门/数据集市层、个体层。

    è¿éåå¾çæè¿°

    操作层
           

           操作层是指为具体业务提供实时响应的各个业务系统,比如常见的订单系统、ERP、用户中心等等具体业务系统,这些系统中的数据一般都是存入关系型数据库。它们是数据的来源。

    数据仓库


           数据仓库收集操作层各个业务系统中的数据,进行统一格式、统一计量单位,规整有序地组织在一起,为数据分析、数据挖掘等需求提供数据支持。

    数据集市


           部门/数据集市层是各个部门根据自己的数据分析需求,从数据仓库中抽取自己部门所关心的数据报表。

    个体层


           个体层中的不同角色个体有读取不同数据的权限。

    2、数据仓库概念


           数据仓库是一个面向主题的、集成的、非易失的、随时间变化的,用来支持管理人员决策的数据集合,数据仓库中包含了粒度化的企业数据。

    面向主题的
           

           数据仓库不同于传统的操作型系统,传统的操作型系统中的数据是围绕功能进行组织的,而数据仓库是针对于某一个主题进行分析数据用的,比如针对于销售主题、针对于客户主题等等。

    集成的


           不同产品或者系统中的数据是分散在各自系统中的,并且格式不一致、计量单位不一致。而数据仓库必须将多个分散的数据统一为一致的、无歧义的数据格式后,并解决了命名冲突、计量单位不一致等问题,然后将数据整合在一起,才能称这个数据仓库是集成的。

    随时间变化的


           数据仓库要体现出数据随时间变化的情况,并且可以反映在过去某一个时间点上数据是什么样子的,也就是随时间变化的含义。而传统的操作型系统,只能保存当前数据,体现当前的情况。

    非易失的


           非易失是指:数据一旦进入数据仓库,就不能再被改变了,当在操作型系统中把数据改变后,再进入数据仓库就会产生新的记录。这样数据仓库就保留了数据变化的轨迹。

    3、一般架构

    è¿éåå¾çæè¿°


    STAGE层


           业务系统的数据接入到数据仓库时,首先将业务数据仓储到STAGE层中,Stage层作为一个临时缓冲区,并屏蔽对业务系统的干扰。 
           STAGE层中的表结构和数据定义一般与业务系统保持一致。 
           Stage中的数据可以每次全量接入也可以每次增量接入,一般都有会数据老化的机制,不用长期保存。 
           Stage的数据不会对外部开放。

     ODS层


           ODS才是数据仓库真正意义上的基础数据,数据是被清洗过的,ODS层的数据是定义统一的、可以体现历史的、被长期保存的数据。 
           ODS层的数据粒度与Stage层数据粒度是一致的。 
           Stage层中的数据是完全形式的源数据,需要进行清洗才能进入ODS层,所以说ODS层是数据仓库格式规整的基础数据,为上层服务。

    MDS层


           MDS是数据仓库中间层,数据是以主题域划分的,并根据业务进行数据关联形成宽表,但是不对数据进行聚合处理,MDS层数据为数据仓库的上层的统计、分析、挖掘和应用提供直接支持。 
    MDS层的数据也可以执行一定的老化策略。

    ADS层


           ADS层是数据仓库的应用层,一般以业务线或者部门划分库。这一层可以为各个业务线创建一个数据库。 
    ADS层的数据是基于MDS层数据生成的业务报表数据,可以直接作为数据仓库的输出导出到外部的操作型系统中(MySQL、MSSQL、Hbase、Elasticsearch等)。

     DIM层


           DIM层是数据仓库数据中,各层公用的维度数据。比如:省市县数据。

    ETL调度系统


           对接入数据仓库的数据进行清洗、数据仓库各层间数据流转都需要大量的程序任务来操作,这些任务一般都是定时的,并且之间都是有前后依赖关系的,为了能保证任务的有序执行,就需要一个ETL调度系统来管理。

    元数据管理系统


           描述数据的数据叫做元数据,元数据信息一般包括表名、表描述信息、所在数据库、表结构、存储位置等基本信息,另外还有表之间的血缘关系信息、每天的增量信息、表结构修改记录信息等等。 
    数据仓库中有大量的表,元数据管理系统就是用来收集、存储、查询数据仓库中元数据的工具,这个系统为数据使用方提供了极大的便利。

    4、设计的两个重要问题


    1、 粒度


           粒度是指数据仓库中数据单元的细节程度或综合程度的级别。粒度会深刻地影响数据量的大小以及数据仓库的查询能力。 
    细节程度越高,粒度级别就越低,查询就越灵活;相反,细节程度越低,粒度级别就越高。 
           双重粒度: 
           双重粒度是存储两个粒度下的数据:一个是全量的细节数据;另一个是轻度综合的数据。

    2、 分区


           数据分区是指把数据分散到可独立处理的分离物理单元中去。恰当地进行分区可以给数据仓库带来多个方面的好处: 
    (1) 数据装载 (2) 数据访问 (3) 数据存档 (4) 数据删除 (5) 数据监控 (6) 数据存储
    --------------------- 

    备注:原文地址
     

    展开全文
  • 数据仓库基本概念

    千次阅读 2011-08-12 08:35:27
    数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。 功能结构三层次:(数据采集、...
  • Git使用本地仓库基本操作

    万次阅读 多人点赞 2016-07-08 10:49:26
    但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像...
  • Android基础入门教程——1.5.1 Git使用教程之本地仓库基本操作标签: Android基础入门教程Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本...
  • 数据仓库开发工程师岗位要求

    千次阅读 2019-04-11 13:32:58
    数据仓库开发工程师(岗位职责) 职位描述 岗位职责: 1、负责数据仓库设计与开发,以及现场实施工作; 2、参与地铁数据分析挖掘的业务需求调研与分析设计工作; 3、参与地铁数据分析挖掘的详细设计、代码编写...
  • 浅谈数据仓库基本架构

    万次阅读 2017-02-09 09:18:07
    其实数据仓库本身并“生产”任何数据,同时自身也需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而叫“工厂”的原因。因此数据仓库基本架构主要包含的是数据流入...
  • 0x00 前言 整理一些数据仓库中的常用概念。大部分概念不是照搬书上的准确定义,会加入很多自己的理解。...个人理解,数据仓库不单单是一个概念,其实算是对数据管理和使用的一种方法论,它包括了如何
  • svn的本地仓库位置,svn的实现机制

    千次阅读 2018-10-08 15:25:36
     svn本地仓库位置就是在自己checkout代码的时候自己选择的目录,工作流程大概是 创建文件 --> add 本地仓库 --> commit到远程服务器上面去。 svn的常用操作: update功能:是从SVN服务器上把...
  • (内容整理自网络学习视频) ...数据质量:改善数据统计口径的一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台。 所以,大数据的数仓建模需要通过建模的方法更好的组织、存储...
  • Git本地仓库基本操作

    千次阅读 2019-02-27 00:02:43
    Git 本地仓库基本操作 1、设置用户名和邮箱地址 2、创建一个版本库 3、把文件提交至版本库 4、修改文件 5、版本回退 6、撤销修改 7、删除文件 1、设置用户名和邮箱地址 $ git config --global user.name "Your...
  • 搭建数据仓库基本步骤

    千次阅读 2019-10-21 10:14:00
    数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是同时点的数据库快照的集合, 以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。 分析:根据个人以及查看相关的资料也可以...
  • Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository)理解了这三个概念,就理解了 Docker 的整个生命周期。Docker 镜像Docker 镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的 ...
  • 遵循这些原则进行维度建模可以保证数据粒度合理,模型灵活,能够适应未来的信息资源,违反这些原则你将会把用户弄糊涂,并且会遇到数据仓库障碍。本文适用于多维建模,使用于3NF建模。 二、正文  原则1、载入...
  • Docker 镜像、容器、仓库的概念Docker镜像Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一...
  • 1.5.1 Git使用教程之本地仓库基本操作 Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样 我们可以选择...
  • 数据仓库多维数据模型基本概念

    万次阅读 2017-07-13 13:49:52
    数据仓库的解决方法包括:将决策支持型数据处理从事务型数据处理中分离出来。数据按照一定的周期(通常在每晚或者每周末),从事务型数据库中导入决策支持型数据库——既“数据仓库”。数据仓库是按回答企业某方面的...
  •  名词: BI(Business Intelligence):商业智能, DW(Data Warehouse):数据仓库,详见正文Q1部分。 OLTP(On-Line Transaction Processing):联机事务处理也称为面向交易的处理系统,其基本特征是顾客的原始数据...
  • 数据仓库

    万次阅读 2019-04-15 11:57:54
    数据仓库(Data Warehouse)是一个...数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的一致性,以保证数据仓库内的信息是关于整个企业的一致的...
  • 1、从服务器上克隆完整的Git仓库包括代码和版本信息)到单机上。 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、把服务器上最新版...
  • 分类目录:商业智能《数据仓库Hive编程》总目录 Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型, 其中一个需要考虑的因素就是这些数据类型是如何在文本文件中...
  • 背景经常用git都知道,别人有个仓库如在github,轻点fork一下,则这个仓库的所有分支/tags都跑到自己名下的仓库了。但是在更多时候,是没有这个fork按键的,这时需要我们使用命令将仓库的origin备份到myorigin....
  • 企业如何选择仓库自动化

    千次阅读 2005-01-14 16:57:00
    企业如何选择仓库自动化 仓库自动化的效益是显而易见的:自动化能够加快处理速度,提高精确度,降低动力成本,提高可靠性,达到库房面积和空间的更有效利用。但是,这些优势并不是免费得来。自动化需要很昂贵的成本...
  • maven可以在某个位置统一存储所有maven项目共享的构件,这个统一的位置就是仓库。实际的Maven项目将不会各自存储其依赖文件,它们只需要声明这些依赖的坐标,在需要的时候(例如,编译项目的时候需要将依赖加入到...
  • 数据仓库多维数据模型设计

    万次阅读 2017-11-09 18:14:59
    建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。 数据仓库建模方法 大千世界,...
  • 数据仓库基础

    千次阅读 2012-08-30 09:40:43
    数据仓库概念 数据仓库是一个面向主题的、集成的、非易失的、随时间变化的用来支持管理人员决策的数据集合 面向主题:操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,738
精华内容 47,495
关键字:

仓库位置选择的基本要求不包括