作者:燕飞

Kyligence 大数据老司机,拥有超过15年的大数据/数据仓库领域从业经验,对大数据/数据仓库的建设规划、架构设计、技术体系、方法论及主流厂商的产品和解决方案,均有深入的研究和实践。

在之前的文章《讲透大数据分析,我只需要一顿饭!》里,我用做饭这件大家身边的事情来介绍了大数据及数据分析工程,应该能够让大家对数据分析这件看上去很专业的行业有了一定的认识,很高兴的是文章也得到了很多数据圈专业人士的共鸣和互动。

这篇文章我们会顺着之前的思路,稍微深入一点,聊聊数据分析架构。

什么叫数据分析架构,说的通俗点,其实就是数据采集(买菜)、数据建模(配菜)、数据加工(炒菜)、数据分析(吃菜)这些数据分析流程应该如何划分功能模块(专业化分工),才能方便灵活、规模化、最大化的满足广大数据消费者(吃货)的数据分析(美食)需求。

就好比吃饭这件事,我们可以自己在厨房里做,去饭店吃,或者叫外卖等不同方式,这几种吃饭方式是人类生活方式的一种进化,更是通过不同的专业化分工满足了吃货们不同时期、不同层次的需求。

而数据分析作为一件相对来说比吃饭更专业的事情,也同样需要通过流程设计和专业化分工来满足更广泛的数据消费需求,我们通常叫做架构设计。

闲话少说,先直接上图,我把迄今为止的数据分析架构的历史简单分为三个阶段:

数据分析1.0阶段:业务报表

这个阶段是数据分析的初始阶段。随着数据库技术的出现,企业纷纷开始信息化建设,业务流程信息化沉淀了大量数字化的业务数据,而数据分析的需求其实大家一直都有,既然有了数据沉淀,通过这些数据进行报表统计和数据分析的需求自然就出现了。

1.0阶段,数据分析开始萌芽,数据加工、报表统计都在业务系统里直接进行的(数据产生和数据分析都在同一个系统里进行,所以这个时候还没有数据采集一说)。这就好比自己在家里做饭吃,可以想象,由于食材(数据)、厨房(数据库资源)、手艺(专业能力)等方面的限制,吃饭的体验不会太好,主要满足吃饱(报表统计)的需求。

当然现代业务报表有了很大的改变,比如帆软finereport一类的报表工具,可以跨业务系统、跨数据库取数做报表做分析,甚至对接数据集市、数据仓库(接下来我正要说)。

finereport制作的dashboard

数据分析2.0阶段:数据集市

由于在业务系统里直接做数据分析体验不好,还可能会影响正常的业务流程,而企业数据分析的需求越来越完善,业务人员自然而然的希望在业务系统之外专门搭建一个用于数据分析的独立新系统,既能用于支持数据分析,又可以不影响正常的业务流程,于是,数据集市应运而生。

从数据集市开始,数据分析开始作为一个正式的行业出现,出现了从业务系统到数据集市的数据采集和传输(买菜)需求,另外,数据加工,数据分析等专业岗位和从业人员开始出现。

这就好比饭店的出现使得在吃饭这件事上出现了专业化分工,同时也开创了餐饮行业。饭店里有人专门买菜,配菜,炒菜,大厨开始出现,这一方式很好的满足了广大吃货在省事、美食选择、口感方面的需求,体验自然是棒棒的。

数据分析2.5阶段:数据仓库

随着企业数据分析活动如火如荼的开展,数据集市开始越建越多,同样的数据加工逻辑、指标等难免在分散的数据集市里被重复计算,浪费计算资源不说,经常就会出现数据统计口径不一致的问题,让领导们不知道自己该相信哪个数据。

这就好比饭店开的多了,同样的菜品在不同的饭店里难免会雷同,但是同一个“鱼香肉丝”不同饭店做出来的的口味难免会不一样,吃货们肯定会迷惑哪家才是最正宗的,也希望知道哪个才是最好吃的。

这个时候,数据仓库概念应运而生。

数据仓库为了解决数据集市分散建设带来的数据不一致、重复计算浪费资源等问题,提倡以一个集中式平台来统一进行数据采集、数据清洗、数据加工,并且向外部提供各种数据分析产品和服务。

数据仓库算是开创了数据分析史真正意义上的一个时代,对数据分析行业的发展和成熟有着不可磨灭的贡献:

  • 诞生了专门的数据仓库技术(MPP,massively parallel processing)以及一大批相关的专业厂商,来解决大量数据需要集中进行存储、加工和分析的技术难题
  • 发展了体系化的数据仓库系统建设方法论和最佳实践
  • 培养了一大批数据仓库从业人员(DWer)

既然,数据仓库时代在数据分析史上有着如此重要的地位,并且在今天仍然有着深远的影响,那么,问题来了。

为什么数据仓库阶段只是2.5而不是3.0呢?

首先,从架构的角度来看,个人认为数据仓库相对于数据集市并没有本质的区别,这个从上面的“数据分析架构发展的三个阶段”图中也能看出来,数据集市和数据仓库的架构是非常相似的,数据仓库可以简单的认为是一个超级数据集市,区别只在于规模,这就好比为了规范菜品质量,让大家能够一站式吃到各种五花八门的菜品,我们开了个超级大饭店,虽然这个饭店很大,但仍然是个饭店。

其次,数据仓库以解决数据集市数据分散、数据口径不统一为目标,提出了打造企业级统一业务视图的愿景(The single view of business ),其建设方法强调数据采集规范化,数据管理标准化以及数据加工流程化,这种建设思路从数据管理的角度来说是非常有价值的,产出了很多成熟的数据管理规范和数据治理方法论。

但......是......

从数据分析的角度来看,虽然数仓系统的建设的确一定程度上满足了业务部门的数据分析需求,然而,传统数据仓库建设方法在灵活的支持各种数据需求、敏捷的响应分析请求、普及企业数据驱动的分析文化方面,却始终心有余而力不足

造成这种情况,虽然有着技术、成本方面的原因,但架构耦合性高、建设方法过于僵化也是重要原因,比如:

  • 数据仓库集中式的平台架构方式,将数据加工和数据服务都通过一个平台来支持,必然会造成资源竞争,无法兼顾。这就好比一个饭店里,后厨占得地方太大,堂食的空间就小了,能够同时响应的消费者数量必然受到限制。
  • 数据仓库的数据加工是层层递进、环环相扣的方式,有着严格的加工流程,并且涉及到多个角色的互相配合,任何一个数据分析需求,从需求的提出到最终实现,快的要好几周,慢的要好几个月,自然是跟不上业务的快速变化。客户到了饭店,只要是想点个菜单上没有的菜品,饭店都需要把买菜、洗菜、配菜、炒菜这些环节都走一遍,上菜起码得等2、3个小时甚至是第二天才有,没有哪个消费者能忍受的了吧。
  • 很多数仓采用数据驱动的建设方式,不管是不是需要的数据,先往仓库里放,总觉得以后会用的上,导致仓库规模极速膨胀,并且存在大量无产出数据,运维成本和难度非常大。就好像开个饭店不管客人喜欢吃什么,先把能买到的菜都买来,抛开成本不说,光是运输、清洗、仓储的工作量就能把人给耗死。
  • 数仓建设有着成熟完善的数据治理配套理论,什么元数据管理、数据标准管理、数据质量管理等等,但是这些理论的落地往往最走变成了一纸规范,却没法和数据仓库建设过程有机的结合,最后变成了你定你的规范,我建我的系统,或者是我先建系统,你再定规范,随着系统越来越庞大,没人能够很清楚的知道仓库里到底有什么,整个数仓自然就变的难以管理和使用。

于是,虽然数据仓库进行了数十年的发展,很多企业也是花了大量的人力和成本来进行数据仓库系统的建设,但缺乏敏捷性的平台建设方式,自主选择少,服务响应慢,各类数据消费者的满意度始终都不高。

因此,慢慢的,很多企业中的数据仓库系统,开始变得有点古代皇宫御膳房的味道,汇集各种食材,对于食材、流程、样式有着严格的加工规范,充分保证了菜品的质量和水准,但是其上菜速度、翻台率以及能够服务的食客数量都受到了极大的限制,所以只有能力为特定群体(皇家)提供各种特定的菜品。

所以,虽然数据仓库对于数据存储、数据采集、数据加工、数据治理这些方面发展了成熟的方法论(相当于专业的饭店后厨管理理论),但对于满足各种灵活、敏捷、普及的数据分析需求,其作用一直是被诟病的。

而进入到今天的大数据时代,这个弊病就更加的明显。

大数据浪潮带来的挑战不仅仅是数据量的爆发式增长,更重要的是把个人、企业、政府对数据、数据分析的重视性提升到了前所未有的高度,整个社会对数据分析的需求也呈现爆发式的增长。所以,Gartner提出了平民数据科学家(citizen data scientist)的概念,更有厂商和业内大牛喊出了“人人都是数据分析师”的口号。

企业如何满足成千上万的内部员工对于数据分析的需求?企业如何满足千万级以上的外部客户对于数据分析的需求?政府如何满足上亿的社会大众对于数据分析的需求?这成了大数据时代的数据架构师们需要去回答的问题。

可以说,用户日益增长的数据分析需求与落后的数据服务能力之间的矛盾已经成为大数据时代的主要矛盾。

所以,数据仓库强调数据加工流程而忽视数据服务效率,过于严苛、繁琐的建设方法,数据开发与数据治理脱节的问题,使得其难以快速进行规模化扩展,也就无法应对爆发式的数据分析和数据服务需求,抛开技术、成本上的限制不说,传统数仓的建设方法论显然也是无法解决大数据时代的主要矛盾的。

那,大数据时代,大数据分析架构的出路在哪呢?什么样的数据平台建设方法才是最有效的?是否可以在数据仓库成熟的建设方法论上进行改造来应对爆发式的数据分析需求?

我会在后续的更新中送上《基于Hadoop架构下的FineBI大数据引擎技术原理》哦!

企业如何选择数据分析架构?——谈谈3种架构的利弊相关推荐

  1. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  2. 架构扫盲 | 四种常见的软件架构

    -     前言    - 如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识 ...

  3. 系统架构设计师如何进行架构设计

    9.1 软件架构概述 9.1.1 软件架构的定义 定义1:软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构有软件元素.元素的外部可见属性及他们之间的关系组成. 定义2:软件架构为软件系统 ...

  4. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  5. 【架构】分布式服务架构与微服务架构

    文章目录 0)服务相关架构的演变 *关于面向对象.面向组件.面向服务 1)面向服务架构(SOA) 1.1 什么是面向服务架构(SOA)? 1.2 为什么需要SOA? 1.3 SOA 的特征 1.4 S ...

  6. 对B/S架构和C/S架构的分析

    概述 在这个信息急剧膨胀的社会,我们不得不说人类正进入一个崭新的时代,那就是信息时代.信息时代的一个主要而显著的特征就是计算机网络的应用.计算机网络从最初的集中式计算,经过了Client/Server ...

  7. 大型网站技术架构-2. 大型网站架构模式

    分层 分层是企业应用中最常见的一种架构模式,将系统在横向维度上切分为几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统. 在大型网站架构中也采用分层结构, ...

  8. 《企业大数据系统构建实战:技术、架构、实施与应用》一3.2 如何选择解决方案...

    本节书摘来自华章出版社<企业大数据系统构建实战:技术.架构.实施与应用>一书中的第3章,第3.2节,作者吕兆星 郑传峰 宋天龙 杨晓鹏,更多章节内容可以访问云栖社区"华章计算机& ...

  9. 选择企业最合适的人才 —— 谈谈因人设岗与因事设岗

    给自己放松了一阵子,整个脸色都没粉刺了,可见经营一家公司真是需要极强的排毒能力.秋老虎可能快被冻死了,秋招也接近尾声了,很多企业都没找到自己合适的人.今天谈谈企业招募人才的心得. 任何企业都感觉很难招 ...

最新文章

  1. 【Android 基础】Animation 动画介绍和实现
  2. 获取AD里面指定OU或Container里面的计算机以及Lastlogon时间格式转换
  3. Vue+Openlayers+el-radio实现切换地图显示
  4. Linux下Anaconda3安装及使用教程
  5. linux 下i2c读写命令,S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作
  6. C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑
  7. etherum 常用命令及搭建私有链
  8. ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面API错误)
  9. 洛谷-小书童——密码-简单字符串
  10. 博客园博客开通了,庆贺一下
  11. 协程 eventlet
  12. paddle中import onnxruntime报错缺失Microsoft Visual C++ Redistributable for Visual Studio 2019 not install
  13. 在centos7上使用yum安装jdk1.8
  14. 如何选择VC界面库产品?(二)– DSkinLite界面库介绍
  15. Git 补丁Apply Patch是干啥的?
  16. 京东用了哪些大数据平台产品体系?
  17. 用开源github,还是咱中国自己的代码托管平台云效?
  18. 少爷的云台山漂流记:山崖水畔的狂欢
  19. 乘法计算机公式,在word中乘法的函数公式计算公式
  20. 用python做股市数据分析一_用python做股票数据分析(兴趣篇)

热门文章

  1. 未能找到存储过程sp__sp_WhoIsActive存储过程概述
  2. 如何杀死远程服务器到本机的tcp连接
  3. delphi 用户可以点击格式修改进行模板修改
  4. [LibreOJ β Round #4] 子集
  5. 学习总结——接口测试基础
  6. Python撰写mail
  7. 键盘按钮keyCode大全
  8. 【windows核心编程】线程局部存储TLS
  9. C#中字符串操作函数
  10. web service 学习 2 -- 什么时候应该使用web service