[目录]
- 第一章:概述
- 第二章:整体数据分层
- 第三章:整体实现框架
- 第四章:元数据
- 第五章:ETL
- 第六章:数据校验
- 第七章:数据标准化
- 第八章:去重
- 第九章:增量/全量
- 第十章:拉链处理
- 第十一章:分布式处理增量
- 第十二章:列式存储
- 第十三章:逻辑数据模型(数仓模型)
- 第十四章:数据模型参考
- 第十五章:维模型
- 第十六章:渐变维
- 第十七章:数据回滚
- 第十八章:关于报表
- 第十九章:数据挖掘
数据仓库实践杂谈(一)概述
在IT应用水平高的行业或企业中,交易系统和数据分析系统是两个重要的部分。比如在银行,交易系统是以核心业务系统(Core Banking System)为主加上各业务系统(信贷系统、中间业务系统、支付系统等)和渠道系统组成。而数据分析体系则是以数据仓库为核心众多分析、报表系统,如总账分析、客户风险、监管报送、管理会计等。
数据仓库技术提出已经很多年,在具体实施项目中,也有过不同的名字,比如基础数据库、数据平台、ODS等。不管怎么叫,都是利用数据处理分析技术对众多数据进行规整、存储以及应用的过程。随着大数据技术的兴起和成熟,传统的数据仓库又焕发了光彩。实际上,绝大多数的数据分析、数据挖掘技术、算法都是在上个世纪80年代之前被发明的。但限于当时的存储能力、算力水平等,很多技术并没有发挥应有的作用。大数据技术的出现,使得存储和计算能力极大提升,不但算的快,而且所需要的硬件成本极大降低。只要算的快,简直就是一力降十会。
大数据技术的发展带来各行业对数据管理、应用的变更。以银行为例,银行信息化这么多年发展,其实对内部数据的应用已经非常完善,各种经营管理的统计指标,监管要求的各种指标好数以千计。为银行赋予大数据能力之后,能做什么?举几个例子:
- 全量数据在线化:如同各电商平台,所有数据都能立即使用,而原来银行过期数据基本都在磁盘,恢复一次就是个大工程。
- 报表动态化:原来各种统计报表都只能实现计算好,看到的就是静态的,在大数据时代可以跟用户交互起来,比如压力测试,在线改变参数后台直接运行,快速给出结果。
- 重视过程数据:现在银行记录和使用的基本都是结果数据,比如转账的交易结果,但用户实现这个交易的过程实际上访问了很多页面,做了很好几个步骤,过程数据更能反应用户的体验。
- 获取更多的数据:通过互联网技术,或者合作获得更多的数据进行精准营销或者风控、反欺诈。
- 非结构化数据处理能力:比如系统日志,客户电话记录、交互记录,以及海量的影像、视频等,充分利用起来可以优化系统,挖掘用户的潜在需求及风险。
以上等等。
我们在说数据仓库,或者数据分析系统,都会提到OLTP和OLAP两类。联机交易系统(OLTP)和联机分析系统(OLAP)是两种不同的实际思路和方法。从系统设计的角度,两者区别:
- 事务方面
- OLTP系统的数据产生一般通过联机事务产生,也就是一笔一笔的交易(如银行频繁的存取款操作)。
- OLAP系统则一般是从交易系统中批量导入,现在有所谓的实时/准实时数据仓库,可以认为是批量处理的频次提高。
- 数据一致性
- OLTP重视数据一致性,不管强一致性还是最终一致性,都要实现一致性,在分布式体系中还需要考虑多段事务等。
- OLAP则基本不考虑事务,毕竟数据批量导入而且不再修改,面向用户端都是查询服务。
- 数据结构
- OLTP系统的数据模型(表结构)一般是固定的,其反映了业务需要处理的对象和关系,模型的变动必然导致程序的变化。
- OLAP系统不太关心具体的业务数据结构是否变化,会通过元数据(描述数据的数据)记载目标数据的结构,同时通过元数据驱动去生成相应的处理程序,也就是业务系统的数据结构变化了,只需要更新元数据,系统依然可以很好地工作。
- 数据操作
- OLTP系统操作数据一般都采用对象化(OR-Mapping生成实体类),尤其现在大量系统都基于java/spring开发,DAO(Data
Access Object)技术非常灵活,结构变化了都可以自动生成实体类,极大降低开发维护成本。 - OLAP操作数据都是大批量的,处理效率是第一位的,尽量了利用存储系统(如数据库)原生的原语去操作,并且考虑是否可以通过数据分布并行的处理。
- OLTP系统操作数据一般都采用对象化(OR-Mapping生成实体类),尤其现在大量系统都基于java/spring开发,DAO(Data
- 体系架构
- OLTP系统在意处理的并发量(TPS:transactions per
second每秒响应事务数),为了能快速的插入/更新数据,各种分布式架构很复杂。 - OLAP也有QPS(Queries Per Second
每秒查询率),但毕竟系统不涉及更改数据,无关事务,因此基本只需要把查询请求分流(负载均衡)。更多的关注点在于的大批量数据的流程化处理和批量处理的效率,以及通过批量处理减少用户请求时候(Ad
Hoc,即席查询)的实时计算量。
- OLTP系统在意处理的并发量(TPS:transactions per
两类系统各有不一样的复杂。从交易系统转型做分析系统的除了需要学习统计以及各种分析算法之外,对于系统架构的变化也应该重点学习。
数据分析或者大数据也并不是会把Hadoop装起来跑通例子运行几个MapReduce程序或者知道几个算法这么简答。这是一个完整的体系和严谨的工程,除了需要对行业的熟悉,对数据的理解之外,还有大量的技术需要掌握,包括数据的获取、验证、加工、存储以及应用等。具体如下:
- 数据分层;
- 整体实现框架;
- 元数据;
- ETL;
- 数据校验;
- 数据标准化
- 数据去重;
- 数据增量处理及拉链存储;
- 数据仓库的数据存储特点;
- 数据模型;
- 维模型和渐变维;
- 数据回滚;
- 报表;
- 数据挖掘等。
将在后面陆续介绍。本文基本上不涉及具体的工具软件的操作使用,更多从概念、思路、算法上做一个普及。
未完待续。
————————————————
版权声明:本文为CSDN博主「cfy_fantasyxx」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cfy_fantasyxx/article/details/102812931
原创文章,作者:一叶知秋,如若转载,请注明出处:http://www.17bigdata.com/%e6%95%b0%e6%8d%ae%e4%bb%93%e5%ba%93%e5%ae%9e%e8%b7%b5%e6%9d%82%e8%b0%88-%ef%bc%88%e4%b8%80%ef%bc%89-%e6%a6%82%e8%bf%b0/
注意:本文归作者所有,未经作者允许,不得转载