网上已经有很多关于数据仓库的概念、原理、构建方法论的内容,也有很多经典书籍。本文想谈谈企业数据仓库项目工具的架构和组件问题。让我们先谈谈架构。企业数据仓库架构关于数据仓库,有一个简单粗暴的说法就是“任何数据仓库都是一个数据库,一端连接原始数据,另一端通过数据集成工具连接分析接口”。数据仓库用于管理企业的大型数据集,提供数据转换、移动和呈现给最终用户的存储机制。许多架构方法以某种方式扩展数据仓库的功能。我们将专注于最重要的问题。不考虑太多技术细节,整个层次结构可以分为4层:原始数据层(数据源)数据仓库架构数据收集、收集、清洗和转换应用分析层单层架构(直连)大多数情况下,数据仓库是一个关系数据库,其中包含允许多维数据的模块,或者被划分为多个易于访问的多主题信息域,最简单的数据仓库只有一层架构。单层架构是指数据仓库直接连接到分析接口(直连),终端用户可以直接查询。但简单也有缺点和适用性:传统上数据仓库的存储量从100GB起步,直连可能导致数据查询处理速度慢,因为需要直接从数据仓库中查询准确的数据,或者在数据仓库中准确输入过程。过滤掉很多不需要的数据,对数据库和前端BI工具性能要求高,基本性能不会太高。此外,在处理复杂的维度分析时性能也受到限制。由于其速度慢和不可预测性,很少应用于大型数据平台。为了进行高层数据查询,数据仓库应该在低层实例下进行扩展,以简化数据查询。两层数据架构(数据集市层)两层数据架构是在前端应用层和EDW层上增加一个数据集市层。数据集市是包含有关特定主题域的信息的低级存储库。简而言之,它是一个较小的数据库,在特定主题(如销售、运营、营销等)下扩展EDW。这种方法解决了部门级数据查询和分析的问题,每个部门都可以更方便地访问所需的数据,因为每个集市只包含给定域的信息。此外,数据集市限制了最终用户对数据的访问。在访问范围内,设置数据权限。但是创建数据集市层需要额外的硬件资源并将其与数据平台中的其他数据库集成。三层架构(OLAP)在数据集市层之上,我们通常使用联机分析(OLAP)来处理多维数据集(cube)。OLAP数据集是一种特定类型的数据库,它以多维方式描述数据。关系数据库只能表示二维数据,而OLAP允许数据在多个维度上进行编译并在维度之间移动。OLAP专门用于维度建模数据的分析,然后通过BI将OLAP结果以图表的形式展示出来。OLAP的商业价值在于可以让数据进行多维度的切片、分片和分析,提供对所有企业数据或特定数据集市的访问,现在基本已经成为一种主流的架构应用。下面的架构图是使用最广泛的架构,由顶层、中层和底层组成。底层:数据仓库服务器的数据库是最底层,通常是关系型数据库系统,通过后端工具将数据清洗、转换、加载到这一层。中间层:数据仓库中的中间层是使用ROLAP或MOLAP模型实现的OLAP服务器。对于用户来说,这个应用层呈现了数据库的抽象视图,这一层也充当了最终用户和数据库之间的中介。顶层:顶层是前端应用层,连接数据仓库,从数据仓库获取数据或API。常见的应用包括数据查询、报表制作、BI数据分析、数据挖掘等应用开发。从功能应用和技术架构入手,下面是一张非常详细的大中型企业数据仓库架构图。数据仓库的4层核心组件:底层源数据库(数据存储方案)、ETL、前端应用、OLAP服务。数据仓库数据库底层的数据仓库服务器通常是关系型数据库系统(各种表相关的sql统计会更方便,非关系型数据库在这方面还是有区别的)。常用的解决方案包括Oracle、db2、sqlserve,以及essbase、greenplum、teredata等专业的数据仓库解决方案。1.使用传统关系型数据库,或者扩展功能的MPP数据库①传统关系型数据库包括:oracle、mysql、DB2②大规模并行处理数据库:Vertica、Teradata(商用)、Greenplum(开源)广泛应用于银行业,但成本确实不菲。目前,我们更多的项目使用Greenplum。是业界速度最快、性价比最高的高端数据仓库解决方案。Greenplum是基于PostgreSQL的,2015年开源的,我知道国内四大银行有3家在用,前5的物流公司有4家在用。许多公司正在从Teradata迁移到GP。2、大数据平台架构:Hadoop+Hive方案的通用性不用多说,通常是这样的组合:TB级数据用PG,上百TB级数据用GP,PB用Hadoop-i级数据。下面是传统数据仓库架构、GP和Hadoop大数据平台的对比图。Extraction,Collection,CleansingandTransformationTools(ETL)DataSourcing,TransformationandMigrationTools用于执行将数据转换为数据仓库中统一格式所需的所有转换、汇总和所有更改,它们也称为提取、转换和加载工具。其功能包括:1.Extraction全量抽取:适用于增量抽取,如关系表、维表、配置表等数据量较小,不易判断数据变化情况:适用于数据量大的情况数据,以节省提取时间。提取策略2、清洗和空值处理:将空值替换为特定值或直接过滤掉验证数据的正确性:对不符合业务意义的数据进行统一处理标准化数据格式:例如将所有日期标准化成YYYY-MM-DD格式的数据转码:将源数据中的一个编码表示的字段通过关联码表转换成代表其真实含义的值时直接按照模型中定义的值进行转换。3.转换加载转换:使用ODS中的增量或全量数据刷新表DW中加载:每次向表中插入数据都可以称为数据加载关于ETL工具的选择,这里列出了比较表基本包括常用的ETL工具。前端应用工具数据仓库平台的建设最终是为了梳理有用的数据,提供有价值的信息,帮助企业做出正确的决策。前端应用工具主要与数据仓库不同环节的数据进行交互。这些应用程序一般可分为四类:数据查询和报告工具BI即席分析工具数据挖掘工具基于数据仓库或数据集市的各种应用程序开发工具。分析工具主要针对OLAP服务器,报表工具和数据挖掘工具主要针对数据仓库。1、数据查询和报表工具通常用于生成一些固定报表、自动化报表,支持打印、计算等大规模批处理作业。流行的报表工具,在旧数据仓库时代,主要有IBM的BO、Oracle的BIEE,还有微软和cognos,它们是作为一个整体封装在数据仓库解决方案中的,报表作为一个组件存在。然而,传统的数据仓库结构笨重,成本高。很多公司会考虑在项目中自己设计架构,而不是直接强加昂贵的解决方案,包括使用很多开源组件/平台。在报表工具方面,帆软FineReport目前在项目中被广泛使用,对不同的企业数据仓库结构和报表需求具有广泛的适用性。比如连接各种数据库,直接生成报表;将采集整理后的数据以多维度的报表形式展示,支持业务分析报表;对接集团数据仓库,搭建数据中心平台,形成决策分析平台。FineReport功能架构2、BI即席分析工具BI一般集成了OLAP服务器和报表展示功能。分析型BI基于多维数据库的概念,可以从多维的角度分析数据。通常,从数据仓库中提取详细数据的一个子集,经过必要的聚合后存储在OLAP内存中,供前端BI分析工具读取。BI通过在前端拖拽数据字段,多维度展示数据,最终生成各种分析报表。常用的BI工具包括PowerBI、Tableau、FineBI和开源superset。前两者多用于个人使用,FineBI多用于企业项目选型,因为性能、服务方案等都要考虑。剩下的都是自研或者开源的,superset是比较认可的开源BI。FineBI架构BI工具是干什么的就不多说了。在选择项目的时候,主要考虑的是上手难度(没有技术基础的情况下考虑业务使用)、数据处理性能,以及技术选型、成本等其他方面。3.数据挖掘工具OLAP从多维度的角度呈现和分析数据,而数据挖掘则使用算法来揭示数据的规律性,如相关性、模式和趋势。数据挖掘工具通过自动化一些算法和过程来做到这一点。举个例子,比如银行里面的数据仓库,是按照“客户”这个主题来存储数据的。OLAP可以根据客户的基本信息、储蓄账户信息、历史余额信息、银行交易日志等,将数据以报表或可视化的形式实现呈现分析,多方面掌握客户动态,发现数据问题,更好针对不同类型的用户进行针对性的营销。而数据挖掘就是通过历史数据建立模型,在拟合历史的基础上分析未来的趋势,判断哪些因素的变化很可能意味着客户的最终流失,从而避免这种情况的发生。常用的数据挖掘工具,如R、Python、SPSS,基本上开源个人都可以使用。不同于BI和报表,市场上很少有商业工具或项目服务可以为客户提供定制化的数据分析和挖掘。因为这个行业太强了,需要对业务、数据、平台非常熟悉,所以我看到大部分都是自己养的。数据分析团队还是挖这类人才。4、以上报表类、分析类数据产品的应用开发,但也会有针对各种具体业务的数据决策系统的扩展,如基于管理监控的银行行长驾驶舱、基于门店数据的零售等。运营决策系统,以及电商平台营销人员(输入营销目标和参数,例如在双十一母婴市场开展促销活动,系统可以计算出哪些品类产品的选择应该基于过去的海量数据,以及用户在哪个群体中,什么样的活动形式会更有效),都是基于这个逻辑——基于业务的深度应用。这时候数据仓库的作用就是提供一个服务平台。比如现在流行的数据中台,一般都是基于这个逻辑。它将数据变成一种服务,如果您不了解具体细节,则无需执行任何操作。这样的服务,当然需要自己开发。实际上,在这三层之间有一个中间的OLAP服务器,它通常被实现为ROLAP模型或MOLAP模型。现在很多成熟的BI工具都集成了OLAP服务器,所以通常我们只需要选择ETL工具、存储方案和可视化BI方案即可,所以OLAP本文不做讨论。
