首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据运营技术与工具:善于多维分析的关系型数据库

内容摘要

关于如何实现大量历史数据的有效管理和分析,数据仓库大师Bill Immon和Ralph Kimball提出了不同的理论和方法体系。

Bill Immon侧重于数据仓库的长远规划,而Ralph Kimball侧重于数据仓库对于个性化支持。

多维分析与关系型数据库

基于关系代数的数据库理论主要解决结构化数据的管理问题,涌现出的数据管理与数据分析理论和实践包括:数据仓库、数据集市、操作型数据仓库、分析型数据仓库、在线分析处理、数据挖掘、商业智能等。

关系型数据库/数据仓库的分析语言和工具以结构化查询语言SQL为主。

关于如何实现大量历史数据的有效管理和分析,数据仓库大师Bill Immon和Ralph Kimball提出了不同的理论和方法体系。

Bill Immon强调“自上而下”的数据仓库构建方法,即先构建一个大的细粒度的数据仓库池(DW,Data Warehouse),然后再构建面向不同主题的数据集市(DM,Data Market),这样可以保证数据基础的全面性,基于更细粒度的数据进行分析也会让数据分析变得更加灵活。

Ralph Kimball强调“自下而上”的敏捷的数据仓库构建方法,即先构建小的面向不同主题的数据集市(DM,Data Market),然后再逐步完善数据集市,侧重于借助多维模型的设计,使得分析结果更贴近于数据分析用户,有更好的用户体验。

以上两种数据仓库设计大师的观点各有侧重,Bill Immon的观点侧重于数据仓库的长远规划,前期投入成本高,总体成本低,分析能力强,而Ralph Kimball侧重于数据仓库对于个性化需求的支持,从客户需求出发,实用性强,项目风险低。

在商业领域,有Oracle、DB2、SQL Server等企业级数据库,为了支持数据分析应用,设计开发了多种产品和工具。

比如,甲骨文公司的 Oracle Warehouse Builder、IBM公司的DB2 Data Warehouse Edition、微软公司SQL Server系列的Analysis Services Data Mining、ReportingServices等。

甲骨文公司的Oracle数据库是大规模数据管理和分析产品和工具的集大成者。

典型的数据库管理技术和工具包括RAC(Real Application Clusters,实时应用集群)、Partition(分区)等,Oracle数据库基于标准SQL语言做了许多扩展,形成了自己的PL/SQL(Procedural Language/SQL,过程化SQL语言),PL/SQL是一种非常强大的SQL编程语言。

数据存储方式决定了数据分析的效率,而根据应用特点对数据分区是提高数据查询和分析效率的有效手段。

比如,可以从日期、地域、部门等维度对数据进行分区,当数据向数据库装载时,数据库管理系统会根据数据内容将数据分别存放到不同的区域,这样当数据操作时,就会快速地定位数据的存放位置,完成数据的增加、更新、删除、查询等操作。

在数据仓库中预先构建中间表也是提高前台查询和展示效率的一种有效手段。中间表存放汇总后的数据,数据颗粒度更大,数据规模更小,因此能够更加快速地展示分析结果。

使用中间表的设计方式主要适用于在线分析处理(OLAP)应用,通常采用从多个数据源SELECT然后CREATE的方式构建中间表,这样可以提高中间表构建的效率,但是这种方式的缺点是无法预先定义分区,仅仅适用于数据量小的应用场景。

如果要创建数据分区,必须要在创建数据表的同时完成分区的创建,预先为数据划分出数据存放空间,完成数据规划。

由于在数据操作时,为了保证事务的完整性,通常要记录数据操作日志,为了提高数据导入效率,可以事先取消日志(NOLOGGING)。

由于数据操作通常会因为寻找空闲存储空间而降低了数据存取效率,可以在数据操作之间将操作模式改为追加(APPEND)模式,这样就可以将数据在连续的数据空间追加,从而提高了数据导入效率。

如果涉及多个数据表关联更新,建议采用先SELECT再INSERT的方式,避免直接使用UPDATE操作数据。

构建索引也是提高数据查询和统计效率的有效方式。

数据表索引能够提高数据操作效率的原理很简单,就是根据索引预先对数据进行排序,这样就可以通过折半查找法快速找到符合条件的数据,而不是一个一个地对比无序存放的数据。

另外,数据表索引也可以存放在不同的物理磁盘,从而提高了数据的并发处理效率。

尽管传统关系型数据库采用单机模式设计,以至于难以无限横向扩展,只能依赖提升单机处理能力的纵向扩展模式,但是关系型数据库在大规模并行计算方面也一直在努力,并取得了非常大的性能改进。

比如Oracle的“g”系列和“c”系列数据库产品,就是采用网格计算、云计算技术研发而成的。

即便如此,传统数据库架构受限于采用“集中控制”思维,而“集中化”和“中心化”架构方式不太可能实现系统性能的线性扩展,集群内数据库节点规模非常有限。

随着数据库节点的增多,集群总体性能急剧下降。

像Hadoop/HBase这样的分布式数据库采用了与关系型数据库不同的“去中心化”架构设计思维,处理节点之间是“平等”的,因此可以实现处理能力线性扩展,能够满足大规模数据的存储和分析需要。

由中国人主导的,第一个 Apche 顶级开源项目Kylin,就是基于上述原理,用空间换效率,创新地实现了基于Hadoop的分布式数据仓库。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200518A01TRJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券