哪些报表该放入报表系统,哪些又该放到业务系统里?

简介: 哪些报表该放入报表系统,哪些又该放到业务系统里?

OLTP & OLAP

玩数据的都知道,咱把数据分为OLTP(联机事务处理)和OLAP(联机分析处理),他们的方向是截然不同个。OLTP主要负责数据的“增删改查”,简单理解就是对数据本身进行记录额沉淀,是信息部门干的活儿。OLAP主要负责对数据的“清洗、转换、分析、挖掘”,简单理解就是对OLTP沉淀的数据进行价值提取,是数据部门干的活儿。

 

因此事务处理技术发展趋势就是满足事物四大特性:ACID,即原子性、一致性、持久性、隔离性。而分析处理技术发展趋势就是满足数据价值挖掘的需求。但是到这里,依然没有解决本文的核心问题:报表应该放在那里?

OLTP侧的报表

OLTP侧也是有报表的。在数仓建设之前就有报表了,到现在依然如此。几乎所有系统都有基本的统计功能模块,有些业务系统的统计模块里的报表还非常丰富。OLTP侧的报表有得天独厚的优势:与业务和业务系统无缝对接。它们可以轻而易举地做到完全实时——本来么,OLTP侧的报表可以直接从业务表里取数,当然是实时的了。由于OLTP侧完全服务于当前业务流程,因此OLTP侧的报表研制目标的非常明确且稳定。君不见很多业务系统里的报表好几年都不变。但是TP侧的报表也有很多根深蒂固毛病,这些毛病源自于开发报表的人大多都是程序员,他们对数据的理解依然停留在“增删改查”的阶段。举两个例子:1、时间戳;2、状态变化;3、不轻易对数据做操作(避免影响业务系统性能)。很多TP侧的报表都只能根据系统中数据现在的状态进行查询,对历史状态变化没有进行记录和留痕。这就会导致同一个查询条件在昨天和今天查的结果是完全不一样的。原因是业务表中某个筛选条件的状态数据发生变化了。还有就是,TP侧的报表虽然贴近业务,但是也受限于本业务。跨系统进行数据集成就非常困难,往往会在N个系统之间打“老鼠洞”。不仅管理难度大,安全性也受到挑战。

OLA

P侧的报表是的,你猜到了。数据仓库就是为了解决上述问题而诞生的。所以你现在再去看看数据仓库的定义,就能理解为啥这么写了: 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。

OLAP侧的报表是基于数仓、数据集市而建设的。失去了实时性(不过现在也有实时数仓,但是技术复杂度和成本都很高),但是获得了跨系统数据集成、历史状态、稳定等特性。在OLAP侧,由于数据已经搬过来了,就可以随便玩了,可以搞的花样也就很多了。与OLTP侧的范式建模不一样,在AP侧往往采用维度建模,这样的好处就是可以实现报表的自定义化。“拖拉拽”就是在这个技术背景下产生的。OLAP侧的报表好处就不说了,它能让人从Excel中来,往Excel中去(别笑,这个评价很高,懂的人自然就懂——老彭)。

到底放在那里?

OLAP的A就是Analysis-分析,所以OLAP侧的报表就是为了分析而生的。对于查账单这类和业务目的强、实时性高、和业务流程结合紧密的需求来说,OLAP报表明显是不符合要求的。 但是OLTP侧由于数据建模的方式,注定实现不了维度和度量的自由搭配,即便做了“拖拉拽”,也是徒有其型的银枪蜡头,样子货。很难跨N个系统进行数据汇聚后的分析,更是难以支撑海量数据的统计、分析、挖掘需求。但是终究得切分一下,对吧?老彭简单整理了几个问题,问完之后自然就知道应该放在那边了:1、数据来源是否来自单一业务系统?是:OLTP+1;否:OLAP+1。2、数据更新频率是否要求实时?是:OLTP+1;否:OLAP+1。3、报表更偏向业务流程还是业务分析?流程:OLTP+1;分析:OLAP+1。4、报表是否涉及历史状态数据?不涉及:OLTP+1;涉及:OLAP+1。5、数据部门是否独立部门?是:OLTP+1,否:OLAP+10(没写错,数据部门在IT部门下,你还要啥自行车?老老实实听老大安排就完了,扯那么多干啥?)以上问题仅供参考,各位彭友可以多列几个,遇到新报表,按照这个问题列表唠几句就都心里有数了。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
1199 64
|
Oracle Java API
虚拟线程:Java的新利器?
作者通过本文梳理了自己对虚拟线程的理解,顺便捋一捋Java线程的过去、现在和未来。ps:写这篇文章的时候,Java 19刚刚发布,而现在Java 21已经正式GA了,不过虚拟线程的API和底层实现并没有什么变化。
|
存储 算法 前端开发
深入理解操作系统:进程调度与优先级队列算法
【9月更文挑战第25天】在操作系统的复杂世界中,进程调度是维持系统稳定运行的核心机制之一。本文将深入探讨进程调度的基本概念,分析不同的进程调度算法,并着重介绍优先级队列算法的原理和实现。通过简洁明了的语言,我们将一起探索如何优化进程调度,提高操作系统的效率和响应速度。无论你是计算机科学的初学者还是希望深化理解的专业人士,这篇文章都将为你提供有价值的见解。
|
SQL Java 应用服务中间件
Apache Doris 自定义C++ UDF之流程详解(1)
Apache Doris 自定义C++ UDF之流程详解(1)
656 0
|
机器学习/深度学习
【从零开始学习深度学习】21. 卷积神经网络(CNN)之二维卷积层原理介绍、如何用卷积层检测物体边缘
【从零开始学习深度学习】21. 卷积神经网络(CNN)之二维卷积层原理介绍、如何用卷积层检测物体边缘
|
弹性计算 网络安全
VPC:高级功能
VPC:高级功能
396 2
|
存储 监控 关系型数据库
关系型数据库mysql的BLACKHOLE
【6月更文挑战第18天】
478 4
|
Java 大数据 Spring
MyBatis-Plus - 批量插入、更新、删除、查询
MyBatis-Plus - 批量插入、更新、删除、查询
2695 0
如何理解鼠标点击事件在程序中的处理
如何理解鼠标点击事件在程序中的处理
|
数据采集 监控 数据管理
数据质量最佳实践(5):利用质量分和排行榜提升企业数据质量【Dataphin V3.12】
在数据质量最佳实践(3):通过质量治理工作台,实现质量问题的跟踪和处理这篇文章中,我们详细的介绍了如何通过治理工作台,对系统出现的一个一个具体质量问题进行治理。 但是对于企业整体的数据质量情况,我们该如何评估呢?以及如何寻找当前企业的数据质量短板,并有针对性的进行改进和提升呢? 在Dataphin V3.12版本中,质量新增了质量分的能力,可以给数据表和质量规则配置打分权重和打分方式,从而获得全局、数据源、项目、负责人、数据表等维度的质量打分评估,帮助CDO判断企业整体的数据质量情况和数据质量问题的分布,从而有针对性的提升企业整体的数据质量水平。
1297 1

热门文章

最新文章