排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
举报
首页
/
【技术分享】百度开放云张琪:大数据时代的数据仓储
【技术分享】百度开放云张琪:大数据时代的数据仓储
数据库技术大会
2016-06-29
181
本文整理自DTCC2016主题演讲内容,如需转载,请先联系本公众号获取授权!
演讲嘉宾
张琪
百度高级产品经理
百度高级产品经理,百度开放云(bce.baidu.com)大数据平台的产品负责人,热爱数据热衷布道,希望打造良心产品以及交流核心技术,帮助中国企业充分发挥其数据的商业价值。
分享内容
我今天要和大家分享的主题是大数据时代的数据仓储。大数据和数据仓储,大家都耳熟能详,今天我换一个角度来和大家分享一下。
依靠科学方法来获得洞察力
首先我要和大家讲的是科学方法。下图是维基百科对此做出的解释。最开始是我们要在自然界中寻找一些现象,例如猜测DNA是不是一个双螺旋的结构,接下来可以提一些有趣的问题,如果DNA是双螺旋结构那么从上往下看应该是×形状。然后就是能够用实验来验证,比如使用X衍射的方法来证明DNA果然呈现了×形状,从而推断出DNA确实是一个双螺旋的形状。
在科学方法提出来之前,知识的传授更多的是靠口口相传。亚里士多德曾经在他的书里写到:男人的牙齿要比女人多三颗,因为他的老师是这么教他的。但是亚里士多德其实结过两次婚,他只要找他任何一个太太,张嘴,数一数他俩的牙齿是不是一样多,就能够验证这个定理是不是真的。但是很可惜,虽然他经历了两次婚姻,他也没有去做这个。所以我们现在非常强调科学方法,因为有了科学方法才能够帮助你去验证一个理论是不是正确,才能够获得最终的洞察力。
其实在整个科学方法里面最重要的就是这个小三角,即数据分析。你要开发一套可以检测的方法,收集数据来验证、推翻或者改良你的假设,这样你就能找到真的洞察力了。
根据维基百科来看数据分析其实是比较简单的三步。第一步收集原始数据,在这个大漏斗中,最左边的是自然环境中的各种信号、逻辑,通过收集把它转换成data,有了data之后进行各种的加工处理,把它变成计算机可以解决的一些信息,我们叫它information,在information的基础上再去进行分析,得到最后的洞察力,那就是intelligence。
第一步我们拿到的是data,第二步产生的是information,但是有一些说法是解决information的技术——information technology,IT过时了,而date technology是流行的,DT要比IT好。但大家看这个是不是倒过来了,因为DT是比较初等的,而IT比较高级。但是其实这个时代真正的IT应该是最右边的intelligence technology,就是你获得的真正的洞察力。这里还有一个例子可以证实我的观点。大家想一想乔丹当时为耐克作代言说的什么话?Just do IT,他并没有说Just do DT。希望大家把整个的数据分析的因和果、纲和目搞清楚,我们最终目标是要获得洞察力,而前面处理数据信息只是我们的方法而已。
OLAP vs. OLAP
其实使用MySQL这样的OLTP是可以获得洞察力的,但是可以做并不代表它是优化的。其实我们现在讲得更多的是一个OLAP。我们做一个简单的对比,OLTP做的是什么?就是一些日常的事务处理,比如说你在ATM机上存取钱,这样一些小的CRUD的操作。而OLAP更多的是什么?分析。大家知道企业里面有一些数据科学家,在做分析的时候,它更多的是关于复杂的查询和机器的查询,你直接去发一个查询,它很快会把结果给你。
1、访问模式上,OLTP更多的是少量操作的数据,因为你的增删改,大多数时候都是一行的数据,而OLAP由于做复杂的查询,它会一下子跳出来很多很多的数据,有时候可能是全表查询。
2、数据类型,OLTP更多的是最新状态的切片,历史的数据都被覆写掉了,只有在你的日志里才能找到,而OLAP因为是要查询到整个状态,所以它就会带上时间标签,是完整的时间数据。
3、数据规模,MySQL这样子的数据库一般是到GB级,但是如果要做OLAP分析,数据规模少则是TB级,多则上就会到PB级。
4、数据更新,OLTP一般都是实时更新,进行数据操作以后,数据就已经进去了,但是OLAP可能会有一些延迟,例如ATM机器的状态更新了,但是它需要一定的时间把数据拉到数据仓库里面做分析,所以它会有一定的延迟,当然现在有越来越多的技术使时间窗口越来越小。
5、数据组织方式,OLTP大多采用的是第三范式,而OLAP更多的采用的数据结构是星型模型或扁平数据,会有一张很长的流水表作为它的维度表,有一些具体信息会放在组件里面,这样可以减少冗余。还有另一种做法,大数据时代来了,要做join其实还是很痛苦的,那么我们也允许一部分的数据冗余,索性就把这些数据打散,放到一张大表里面。
6、工具支持,数据分析其实是一个非常高大上的工作,会玩SQL是件好事,但是更多的情况下,能不能用一些业界非常流行的BI工具跟背后的系统进行整合,用户通过拖拖拽拽,就可以作出很多很漂亮的报表,获得最终的洞察力。大家要记得洞察力才是我们的终极目标,技术只是锦上添花。传统的OLTP的BI工具都会支持内存里的基于列的压缩技术,因为只有把数据打到内存里面来,并且以列的形式压缩好,交互速度才会非常快,同时也不会影响数据库的性能。但是反观OLAP,因为背后的数据量都是TB级到PB级的,传统的BI工具几乎都无法实现将这样的数据量压缩到内存,所以BI工具都是直接访问数据的。
应时代两大变化:大数据and云计算
OLTP、OLAP技术和很多的传统工具其实已经做得很好了,但为什么今天我们还要来讲这样的东西呢?这里我想引用的一句名言,就是格罗姆·地狱咆哮说的“时代变了”。
我们现在什么时代变了呢?在这里我主要强调两点,一个是大数据来了,数据量大和多样性是这个时代的鲜明特征。现在的数据时代,规整的结构化的数据是少量的,大量的是IOT互联网数据,社交数据,用户日志、行为。第二个时代变化就是云计算,虽然现在很多企业基于数据安全、企业技术倾向、历史问题等等原因还在做私有云,但是云计算还是势不可挡的来了。
云计算带来很多的好处,下面着重为大家讲一下托管服务。现在开源产品很受欢迎,大部分的商业产品都跟开源产品接口是兼容的。但是在运维产品的时候,大家不可避免的都会碰到各种各样的坑,若是要雇佣一个有开源产品运维能力的人,难度较大、薪资也会比较高。所以托管服务是很有优势的。例如现在要建一个Hadoop集群或者Spark集群,你要先审批,然后买硬件,装软件、部署、测试,如果将来业务量大了,还得重新去扩容。但是对于托管服务来说,在云端一键部署,几分钟就可以建一个集群。而且它除了快速开发还可以按需购买,你只需支付你使用期间的费用即可。它也可以支持弹性扩容,同时也具有高可用性和低运维成本,托管服务可以将运维交给团队工程师来做,大家只需专注于自己的业务就可以了。
大数据的问题怎么解决呢?现在基本上有两套技术,一套是Hadoop,这是大家非常熟悉的,这里只讲跟OLAP分析相关的Hadoop技术:底层的HDFS和YARN分别能够把存储、计算这两部分调动起来,我们上面有Hive、Pig可以做查询和批处理,右边的Spark SQL可以做内存查询,HBase是用来存储的。
接下来介绍一下Hadoop在存储引擎方面的特性:
1、Hadoop除了有HDFS之外,其实很多Hadoop的发行版本都是能跟云端的存储进行交互的,比如BOS。对象存储BOS是百度开发的一个对象存储用的HDFS接口。这样做的好处是你的存储不一定要放在自己的集群里,你可以做到存储与计算分离,大量的历史数据可以放到存储里面,然后直接从上面获取数据处理就可以了。
2、高效压缩的列存储,在分析型的场景里数据如果按照一行行存很是浪费,我们一般会对列做压缩存储。
3、数据分区,我把前天的业务数据放一个文件里面,昨天的业务数据放一个文件里面,那么在做查询的时候就不用对所有数据进行查询,只对需要的数据进行处理。
4、智能索引,现在一些开源产品引入了索引,很明显的提高了查询效率。
5、分布式数据库导入,对于Hadoop来说,底下的存储即使是S3、Azure Storage,不是本地的HDFS,它也是一个集群的结点,所以如果你从数据库导入的话,集群计算的效率是非常高的。
Hadoop查询引擎特性:
1、使用HiveQL、Spark SQL这些最常用的一些查询语言。
2、扩展性好,这本来就是Hadoop的特性。
3、基于价值的优化器,这项技术在传统的数据库和数据仓库里是非常常见的,现在Hadoop也在慢慢使用。
4、大表分布式join。
5、谓词下推。
总体来讲,Hadoop虽然不是天生为了OLAP而生的,但是上面有越来越多的技术能够在存储和查询上进行演化,同时它也借鉴了很多传统的数据库或数据仓库的分析型技术,正在向前发展。
术业有专攻,Hadoop虽然是一个非常好的技术,但是MPP仍然有它的优势。这里我们只讲一个非常特定的MPP实现。所谓MPP就是Massive Parallel Processing即大规模的分布式处理,下面我们讲其中一个架构——Shared Nothing。Shared Nothing架构从结构上看除了网络,节点之间的计算内容和磁盘是不共享的,它的好处也很明显,扩展性非常好。
有的数据仓储支持数据一条一条的增删改,但是Columnar Store不支持数据一条条地插入,只支持一大把数据录进去,录进去以后,数据是按照列存储的。列存储有很多的优势,例如在select几个列的时候,和别的列基本就没关系,而且当我往一个列存的时候,如果列里面相邻的数据都是一样的话,那么就会很容易做压缩,同时在查询的时候也有很大的优势。
所以MPP + Shared Nothing + Columnar Store这种关系数据仓储其实也能解决大数据的问题,打个比方,百度有一个Palo的产品,百度统计和百度搜索的背后都是这个Palo系统做支持,所以MPP也是一个非常好的解决大数据的方法。
MPP在存储方面的优势
1、支持分区与指派。分布式系统有很多物理的节点,我可以对数据可以进行一部分的分区,但是这个partition要落到哪个物理节点,我们是可以进行指派的。这样做的好处是当你做数据join的时候,如果组件相同但属于不同表的数据在一个物理节点的情况下,本地就可以操作。而Hadoop最早的HDFS是一个文件系统,它没有为多表数据join进行任何的优化。
2、单表容量上限到TB级。
3、复合分区是指很多的数据仓库会利用磁盘上不同性质的磁盘。
4、高效压缩的列仓储。
5、少批量导入和批量原子提交。
6、多版本并发控制MVCC。
7、高效的数据分布导入。
8、完善的分布式框架关系。
MPP本身就是关系型数据仓库,在查询方面有着得天独厚的优势。
1、完全兼容MySQL ,使用任何一个MySQL的工具都能够连上这个关系性数据仓库。
2、MPP架构扩展性非常好,但是MPP架构扩展性要比MapReduce差一些,PB级就是它的瓶颈,但是PB级以下MPP还是很有优势的。
3、大表分布式join,由于可以分区和指派,所以join性能是非常好的。
4、复杂谓词下推。
5、分区剪枝。
6、向量执行引擎。
7、库内分析。
8、丰富的SQL表达式。
下面对比一下Hadoop和MPP的相同点和不同点,帮助大家做技术架构的选型。
1、架构,Hadoop有非常流行的两个架构,一个是传统的Hadoop MapReduce,另一个是Spark Dataflow,而MPP比较流行的是MPP + Shared Nothing + Columnar。
2、数据,Hadoop能够处理结构化、半结构化,甚至是非结构化的数据。而MPP只能处理结构化关系型数据。
3、存储,Hadoop除了能够支持HDFS之外,它还有分区、压缩、索引这样的技术。MPP基本上跟它一样,唯一不一样的就是数据近邻。
4、查询接口,Hadoop上比较流行的是HiveQL、Spark SQL,但是传统的关联数据库一般都是兼容SQL的。
5、查询引擎,Hadoop和MPP基本上都是差不多的,但是传统的MPP架构的数据仓库分布式join和基于成本的优化器方面有得天独厚的优势。
大数据时代很多人都在关注Hadoop,对MPP关注不多,其实MPP和Hadoop是互补的技术,大家可以根据自己的业务需求来选择。
云时代的来临给我们带来了哪些变化呢?
1、随着大数据时代的来临,网站日志、用户行为数据、社交媒体、传感器等等都在云端产生了海量非结构化数据。
2、与企业外的云端数据交互获取更强的竞争力。
3、传统的数据仓库或者Hadoop集群建设,需要经过采购硬件、部署软件、开发运维等步骤,周期冗长,而且无法随着业务动态伸缩。
4、运维集群的IT成本日益凸显。
云端托管服务成功解决了上述问题。我们认为大数据时代的数据仓储应该是这样一个架构:
1、大数据时代来了以后,企业有很多非关系型数据,例如日志、图片、视频等,这样的数据是非常合适像Hadoop这样的大数据平台来处理,在云端我们有一个基于Hadoop的托管服务,叫做BMR,一键生成以后可以在里面做各种各样的应用。
2、如果企业内部的数据是一些强关系型的结构化数据,那么推荐大家放到关系型的数据仓库里面。将结构化数据通过ETL载入Palo中,Palo跟MySQL是完全兼容的,只要把数据放进去,原来所有的报表一行代码都不用改,就能够进行查询,速度也非常快。
3、通过Hive或者Spark SQL交互式查询BMR中的数据,用来做原型测试或者即席查询。这些组件支持运行时定义表模式(Schema on Read),方便处理弱结构化数据。非结构化数据可以通过MapReduce或Spark加工成结构化数据。
4、变形完成的结构化数据载入Palo,作为企业唯一真实版本(Single Version of the Truth),帮助企业部门之间协作。
5、通过SQL与Palo通讯,使用BI工具进行即席查询或者交互式分析,或者产生数字面板提供自动报表,以获取洞察力。
集成BI工具
现代商务要使用漂亮的界面来赢得客户,这就要求我们不单是提供数据仓储的技术,还要把整个环节打通,特别是和BI工具的集成。例如有两张表,表里各有3个列,把所有的数据都打到内存里面。在传统数据仓库背景下,MySQL的数据打到BI的报表里面进行交互式查询是可以的,但是在大数据时代的Hadoop或者MPP架构的数据仓库,它根本没有能力把所有的数据都加载进去。数据仓库更适合当中有一张很大的流水表,周围有很多的维度表这样的模式。我们可以把维度表的数据放到内存里面,但是那张巨大的流水表应该放到背后的数据仓库。
我在这里有一个demo可以和大家分享一下,这是一个产生Palo数据仓库的实例。 Palo的用法跟传统的关系数据库比较像,先建数据库和表,然后将数据批量导入进去,现在我背后的数据库差不多是有一张大表,大概600万条记录,总体是在500G,周围的维度表相应来说就小一点。这里有两个维度,是根据年和国家能够做一个利润统计,差不多一秒的时间查询结果就出来了。查询速度快的主要原因是它部分的维度数据是在内存里面,而真正的流水表数据已经放到我们的数据库进行查询。
数据仓库有Hadoop或MPP架构的产品,但是其实前台一定要想办法跟一个BI工具能够打通,因为在做商务分析的时候,写SQL当然是没有问题。但是数据分析是一个高冷的职业,要求员工既要懂业务,也要懂技术。我们应该把难度降下来,让更多的懂业务的人自己去操作自己去分析,如果我们能够跟一些世界顶级的产品,特别是免费产品打通的话,那么对于企业应用数据仓库有很大的帮助。
百度开放云大数据平台
百度开放云在整个数据分析产品站上的产品还是比较全的,收集层我们提供公网上传、一部分硬盘上传,除此之外,还有一个原生的互联网的基于NQTT协议的IOT托管服务,如果你有设备想要定点上传,就可以使用这个服务。在存储上,除了传统的对象仓储之外,它还提供了HDFS接口。上面主要是BMR和Palo,还有一个机器学习BML,里面的深度学习模块应该是国内比较先进的。最上面,我们在这个产品上加入了商务智能、商品推荐、数字广告营销、设备预测性维保等等这些产品,你可以使用这些产品打造服务,给客户创造更多的价值。
展望数据仓储新未来
现在数据仓储的技术是基于Hadoop或者MPP,但是将来更多的会往逻辑数据仓库这个方向走。之前的逻辑仓库是先将数据定义一个schema,开始运算后把数据拿出来,虽然有很多传统公司这么做,但是因为技术不到位,所以不是那么主流。但是现在,像数据虚拟化这样的技术越来越成熟,这可能成为一个现实,它的好处就是每次查询的时候总是最新的数据,没有陈旧数据的缓存。另外我还可以对我的元数据进行管理,如果这个数据只是到我的Hive表里,除了这个表名大家可以进行搜索,能不能通过别的一些关键词描绘性地把它搜索出来,能不能做一些分类等。以前这些需求都是没有的,但是现在我们看到越来越多的客户在提这方面的需求。另外一个就是数据湖,不管是Hadoop还是Palo,都是一个托管的集群概念,你还是能够看到里面的节点,但是像数据湖的话,它是允许用户存在裸数据,不用ETL的过程,只存一个结果。另外我能不能把前面的查询做成一个全托管的服务,不生成集群,数据就放在存储里面,随时查询,随时就出结果。这样的话,我不使用集群,我也不为集群付钱,只为查询付钱。但是这里要强调一点,在用这样集群服务的时候一定要注意自己的语法兼容性,最好不要用一些私有的SQL语法,容易被绑定,要多考虑一些像Spark SQL这样开源的一些语言。
总而言之,大数据时代除了Hadoop还有MPP,只有这两者结合才会是一个比较好的解决方案。
关于DTCC
中国数据库技术大会(DTCC)是目前国内数据库与大数据领域最大规模的技术盛宴,于每年春季召开,迄今已成功举办了七届。大会云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、云端数据库、智能数据平台、大数据安全、数据治理、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术,吸引IT人士参会5000余名,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供了极具价值的交流平台。
关注
大会官方公众号
,获取更多详情
!
↓↓↓
大数据
文章转载自
数据库技术大会
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨