数据,对一个企业的重要性不言而喻,如何利用好企业内部数据,发挥数据的更大价值,对于企业管理者而言尤为重要。作为最传统的数据应用之一,数据仓库在企业内部扮演着重要的角色,构建并正确配置好数据仓库,对于数据分析工作至关重要。一个设计良好的数据仓库,可以让数据分析师们如鱼得水;否则可能使企业陷入无休止的问题之中,并在未来的企业竞争中处于劣势。

随着越来越多的基础设施往云端迁移,数据仓库是否也需要上云?上云后能解决常见的性能、成本、易用性、弹性等诸多问题吗?如果考虑上云,需要注意哪些方面?目前主流云厂商产品又有何特点?面对上述问题,本文尝试给出一些答案,供各位参考。本文部分内容参考了MIT大学教授David J.DeWitt的演讲材料。

一、数据仓库建设

数据仓库(DW)的建设方式有很多种,企业可以根据自身需求进行选择。下图简单罗列了主要的DW建设方案并做出扩展对比。

1.1 建设方案

1)商业方案

商业方案,是最为传统的一种,也是过去20~30年的主流方式。企业外购数仓,包括软、硬件一体交付。其典型产品很多,多为国际知名大厂,国产厂商也有部分。

2)自建+开源

这是很多互联网公司通常采用的方案,通过自建底层基础设施+部署开源软件方式完成。整个方案对企业完全自主可控,但对自有人员技术要求较高。颇为典型的产品就是GreenPlum。

3)云+开源

这是上一种方案的变体,即Iaas层通过云厂商提供,其他仍然是自建的。当企业业务已经上云,为更好地数据集成,方便数据迁移,往往会采用此方案。

4)DW云

企业直接选用数据仓库的云服务,而不再独立建设。下文将针对这种情况,重点说明。

1.2 方案对比

针对上述4种方案,从成本、运维、交付、扩展、性能等多角度进行对比。

  • 成本:包括前期购买和后期运营的费用,这里也包含人员投入的折算费用。
  • 运维复杂度:主要针对企业自有技术人员的运维工作复杂度评估。
  • 交付速度:方案的整体交付速度,包括基础设施的购买、建设。
  • 扩展性:包括数仓的容量扩展和性能扩展能力的综合。
  • 性能表现:数仓的整体性能表现。

1.3 重点对比 - 性价比

从上图中可见:

方案1、2,成本、性能相对固定。其中方案1,成本较高,但性能突出;方案2(自建),则两者均为中等。

方案3、4,成本与性能都是一个区间,且范围较大。方案3,主要取决于云厂商提供的基础设施的能力。方案4,则依靠云厂商的数仓云能力。这也对云厂商产品的选择,提出了更高的要求。下文将就此展开说明。

二、云端数据仓库

2.1 云方案优势

基于上面的说明,采用数据仓库的云服务,具有较多优势,包括:

  • 更好的性价比(无论是前期购买、还是后期运营)
  • 更快的交付速度(最快在分钟级)
  • 更优的弹性能力(扩展或压缩、计算或存储)
  • 更低的运维复杂度(无需专业人士)
  • 更简单地数据集成(如果已上同一云)
  • 更丰富的数据生态(取决于云厂商产品)

2.2 数仓关键因素

数据仓库不同于交易型数据库,它的构建是为了便于分析海量数据,而不是处理事务。这意味着数据仓库往往比其相应的交易型数据库大几个数量级,同时对于交易型数据库的某些关键特性(例如ACID、响应时间等)可能没有那么重要。相反,数据仓库有自己的需求,亦可作为上云选择因素。

1)多种数据集成方式

将数据放入仓库并正确格式化通常是数据仓库面临的最大挑战之一。传统上,数据仓库依赖于批处理提取转换加载作业-ETL。ETL作业仍然很重要,但现在也有从流式摄取数据,甚至允许你直接对不在仓库中的数据执行查询的能力。

2)支持数据多元查询

现有数据仓库,除了要支持典型批量查询外,还需要支持诸如adhoc类的查询方式。传统大数据技术栈hadoop的MapReduce不太适用于此类查询。很多数据仓库转向大规模并行处理(MPP)数据库,其原始是将数据打散后,通过并行技术在多台服务器上执行。此外,还有类似Spark这种利用内存并行处理技术完成查询。

3)标准数据访问方式

数据仓库支持什么语言进行查询。显然,标准SQL是对用户最为友好的方式,可显著降低用户的使用门槛。此外,诸如Python、R等高级语言,也可为用户带来更多访问的方式。但有些是依赖于方言,这就需要进行仔细评估。毕竟,移植的成本是笔不小的开销。

4)灵活资源弹性能力

数据仓库都是为了处理海量数据的,但其规模变化可能很大。此外,其计算资源的需求也是会随着业务而不断变化。因此对基于云的数据仓库的资源的弹性能力要求很高,这也是区别与传统自建方式一个非常大的优势。这里的资源,不仅包括计算资源、也包括数据存储资源。此外,还需要区分是否支持计算、存储的单独提供,而不是紧耦合在一起。

5)低廉运营维护成本

数据仓库是复杂的系统,从底层的物理资源、操作系统、仓库软件,到上层的数据对象、访问语句等。作为云上的数仓,是需要提供简单、灵活、自动化、甚至智能化的运维能力,方便客户使用进而节省用户的综合运营维护成本。

6)灵活使用方式

数据仓库本身是资源密集型应用,如何减低用户的使用成本,是云厂商均需考虑的。例如支持暂停与恢复功能,支持计算与存储的独立扩展等。

2.3 是否上云/如何选择?

使用数据仓库云服务,好处多多。那是否都要上云呢?这需要结合企业需求,考量以下因素来决定。

1)是否有足够的技术积累?

数据仓库本身具备较高的技术门槛,即使选择开源也需要摸索积累的过程,除非是直接使用外部商业产品。

2)是否已经在使用云?

如果已经是某云的客户,那么从云做数据集成将更加容易。否则,跨云或从本地加载数据,将是一个大工程。

3)是否对可用性要求很高?

这方面各企业差异较大,如企业比较重视可用性,云厂商/商业产品无疑具有优势。

4)数据规模是否很大?

数据仓库的一个核心难点,就是支撑的数据规模。如企业数据规模非常大,将对自建方式带来很大挑战。

5)扩展需求是否强烈?

如企业在快速发展期,其数据规模、使用复杂度等变化很大,这就要求数仓具有很好的可扩展性,可快速适应企业发展。云方案相较于其他三种方案,无疑具有优势。

6)使用特征变化剧烈?

如企业的数据使用,非常具有不确定性,即要求数仓具有很好地弹性,可根据需要灵活扩缩容;乃至对查询能力也同样有此类要求。非云的三种方案,都很难适应快速变化。

7)短期成本压力较大?

企业有数仓需求,但短期通过自建、外采商业都一次性投入过大,亦可考虑云方案。

三、数仓的两种模式

数仓从技术实现上,有两种大的分类。在下面说明厂商产品前,简单普及下。

3.1 Shared-Nothing

  • 节点间通过高速网络互连,访问本地资源不需要通过网络。这种方式设计简单,扩展性较好。在较好的模型设计下,数据无需移动,处理效率高。
  • 节点本身具有计算和存储资源,即两者是需要耦合在一起的。这是此模式的硬伤,即存储、计算无法分离,无法做到按需独立弹性。

3.2 Shared Disk/Storage

  • 节点间互相访问或节点访问存储,都是需要通过高速网络。数据本身都是存储在”远端存储”中,而非本地。网络可能成为瓶颈,受到IO传输总量的限制。网络除了承载节点间的数据交换流量外,更多的是要承担大量数据访问的流量。
  • 这种方式弹性很好,计算、存储可独立扩展。

两种方式的优劣,尚无统一定论,但较为主流是采用shared disk/storage的共享方式。但这种方式下,远端存储的性能?如何利用本地存储?网络性能对整体影响?如何实现动态资源分配?扩缩容的实现?等问题均值得研究。

四、典型数仓云服务

4.1 Amazon (AWS) Redshift

Redshift是典型的shared-nothing设计,本地挂载存储。充分利用AWS的基础服务,EC2作为计算节点,S3作为存储及故障恢复使用。优势在于通过调整和定制,性能表现突出;但其架构也决定了计算与存储不能独立缩放。

支持从多种数据源加载数据,也支持集成流式数据,但只支持结构化数据。支持直接对S3上的数据进行查询,而无需ETL。其支持PostgreSQL的方言,对有些数据类型和函数不支持。Redshift本身监控组件性能并自动恢复,其他维护工作由用户负责。日常运维工作,通过用户手工在控制台完成。

4.2 Snowflake

Snowflake是Shared-storage设计,存储与计算分离。本身构建在AWS上,充分利用AWS的基础服务能力,EC2作为计算节点,本地支持缓存,数据表存储在S3中。它提出一种“虚拟仓库”的概念,每个查询可分配到不同的虚拟仓库中,针对不同的仓库也分配不同的资源。仓库间不会影响性能,且仓库本身具有很高的弹性,可自动提供额外的计算资源。

支持结构化和半结构化数据,不需要ETL或预处理就可以摄取这些数据。虽然先不支持流式数据,但可连接到Spark以接收流数据。它使用标准SQL并做了适当扩展。其维护比较简单,不需要维护索引、清理数据等工作。

4.3 Microsoft Azure SQL Data Warehouse

SDW是Shared-Storage设计。基于微软的SQL Server PDW软件,利用Azure存储弹性能力。对T-SQL的全面兼容,可动态调整资源,可通过Ploybase支持非加载访问。

4.4 Google BigQuery

BigQuery是存储与计算分离设计,利用Google的基础服务能力,存储在Collosus FS。工作机制是将SQL查询转换为低级指令,依次执行。其完全抽象了资源的提供、分配、维护、扩缩容等,所有都是Google自动处理。非常适合易用性作为第一诉求的场景。存储上根据处理规模、负载等情况,自动分配分片。计算上资源不专有,在内部和外部客户复用。不能显式控制单一查询的资源使用。计费上使用按计算量收费方式(TB “processed”)

使用上支持标准SQL,也支持半结构化数据类型,支持外部表。支持从Google云端加载或直接访问,也可以导入数据流。其没有索引,除了数据管理外,几乎不需要维护。

作者:韩锋

首发于作者个人公号《韩锋频道》。

来源:宜信技术学院

云端数据仓库的模式选型与建设相关推荐

  1. 阿里云MaxCompute被Forrester评为全球云端数据仓库领导者

    摘要: 参考消息网3月19日报道 日前,全球权威调研机构佛瑞斯特研究公司(Forrester)发布<2018年一季度云端数据仓库>报告.报告对大数据服务商的主要功能.区域表现.细分市场和典 ...

  2. 【技术分享】美团点评数据仓库开发模式演进

    本文整理自DTCC2016主题演讲内容,录音整理及文字编辑IT168@田晓旭@老鱼.如需转载,请先联系本公众号获取授权! 演讲嘉宾 宋洪鑫 美团点评高级工程师 2014年加入美团数据平台,专注数据仓库 ...

  3. 全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点

    摘要: 作为全球云端数据仓库的领导者,阿里云MaxCompute为满足更多客户的业务需求,不断加快全球化部署的节奏.本月10日,美东(弗吉尼亚)节点会正式上线.届时,将会以最新版本产品向用户提供大数据 ...

  4. 中国铁路建设行业运作模式与未来建设方向研究报告2022版

    中国铁路建设行业运作模式与未来建设方向研究报告2022版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿晟信 ...

  5. 企业移动信息化应用开发模式选型指南

    随着移动互联网的逐步深入,移动应用已经从新闻.搜索.电商.游戏.视频等热门应用逐步向企业移动应用领域转移.而且市场规模逐年增长,据IDC发布的报告显示,2013年中国企业级移动应用市场规模为9.3亿美 ...

  6. 得物交易域数据仓库数据质量保障体系建设 |大数据测试

    一.背景介绍 目前得物数仓测试,划分成交易.增长.社区等多个模块,不同的数仓测试域,都会有一名测试人员负责跟进,根据每个版本每个域资源实际投入情况,组内会适当的调整资源,以满足日常迭代需要:单交易域这 ...

  7. 函数计算助力闲鱼构建云端一体化变成模式

    简介:闲鱼是依托阿里电商体系的前台型业务,有非常独特的业务特点和用户诉求,在底层依托阿里系统的同时,在表现层和业务层需要探索适合闲鱼的.并且更加快速灵活的研发体系. 客户介绍 闲鱼是依托阿里电商体系的 ...

  8. 云端开发“大连模式”已具雏形

    点击标题下「中国云报」可快速关注   早在2015年6月华为就与大连市政府签署了云计算战略合作协议,并就共建软件云服务平台.智慧城市等达成了共识.从当那时起,华为大连软件开发云就已经在酝酿之中.从大连 ...

  9. 京东云助力企业“云端建站”,一站式网站建设服务正式上线

    近日,京东云宣布以软件即服务(SaaS)的方式对外提供一站式网站建设服务,包括定制类建站服务及模板类建站服务.京东云开放云端建站服务,可极大程度的简化网站建设的复杂步骤,无需专业技能即可轻松完成建站. ...

最新文章

  1. 九个Console命令,让js调试更简单
  2. python判断点在矩形内_Python测试点是否在矩形中
  3. (52)系统调用阶段测试——基于 SSDT HOOK 的 FindWindowA 监视器
  4. bolt在java,java neo4j bolt
  5. linux重命名的命令行操作,Linux rename命令批量重命名的方法
  6. 美国量子计算机能编程吗,世界首台可编程通用量子计算机美国问世
  7. 软测管理工具实践-01
  8. Struts2_模块包含 及Action总结
  9. Ubuntu18.04 Flutter开发环境搭建
  10. Linux里的21究竟是什么
  11. 屏幕最左上角的 飞秋官方下载 字符
  12. 【服务器】创建docker、运行jupyter相关命令
  13. Struts2学习笔记(十九) 验证码
  14. Python RE模块中search()和match()的区别
  15. 用php设置留言无数据库_PHP留言板无数据库版
  16. Java 数据库添加,修改和删除
  17. 周志华《机器学习》书每章思维导图总结
  18. zip与rar的区别
  19. 宽带拨号连接显示被远程计算机终止
  20. 宝塔linux输入bt,Linux宝塔面板如何挂载硬盘?BT宝塔面板磁盘挂载超简单教程来了!...

热门文章

  1. R语言入门 Chapter05 | 因子
  2. 智能产品如何“智能”?开发者总结五大经验
  3. Http 401错误重现实验及解决办法
  4. java getreader_异常处理:getReader() has already been called for this request
  5. rt-thread ------fal移植
  6. Oracle的用户密码忘了 Oracle用SQL Plus创建数据库表空间
  7. 安装httpd并修改apache服务器的首页,虚拟主机,配置不同端口号的虚拟主机访问Apache服务器
  8. Unity实用小工具或脚本——可折叠伸缩的多级(至少三级)内容列表(类似于Unity的Hierarchy视图中的折叠效果)
  9. 中国的孩子早已变了,老师和家长却还痴迷不悟
  10. NDK_PROJECT_PATH = null问题分析