哈啰,各位小伙伴们,这里是每天进步一点点的花栗鼠小K
之前一直在介绍设计模式和 Java 相关的内容,想必大家也都快看腻了,所以小K今天打算一改常态,聊点不一样的东西。虽然和以往不大一样,但肯定还是技术领域的东西,安啦。小K这次要聊的,是一个有点新鲜的东西:多维数据库。
01
—
什么是多维数据库
一提到数据库,大家首先想到的应该是 MySQL
、SQL Server
、Oracle
等这种关系型数据库( Relational Database
),所以下文所称数据库如不加说明均指关系型数据库。
大多数的IT系统中,基本都使用数据库表结构来设计数据物理模型,这是从应用系统的业务角度来看。实际上,从数据库自身角度出发,它所提供的表、字段、数据行是为了实现外界访问而提供的逻辑模型,真正的数据物理模型是操作系统文件。
不同的数据库虽然都提供标准 SQL
访问能力,但底层实现并不相同
多维数据库与数据库类似,都属于对数据进行存储与管理的基础软件。它为访问者提供的数据模型是维度与数据立方体(或称数据集市),同样,维度与数据立方体也是一种对外提供访问能力的逻辑模型,数据的真正物理结构还是存在于操作系统文件中。
维度和cube经典图
三维空间中的立方体结构可以很形象地表现出多维数据库的逻辑模型,而真正多维数据库能够处理的维度数量应该是不限的。在头脑中想象出更高维度空间中的超立方体形状是很难的,好在虽然多维数据库的实现原理相当之复杂,但使用起来却相当简单。
02
—
多维数据库的语言
多维数据库产品数量不像关系数据库那么多,主要应用领域与关系数据库(主要应用于业务级别的增删改查操作 )也不尽相同,多维数据库主要用于数据分析。
关系数据库使用 SQL
作为查询语言,多维数据库则利用 MDX
作为查询语言,MDX
与 SQL
看上去非常类似,这会造成一些混淆。
MDX
( Multidimension eXpressions
) 是一种 OLAP
多维数据集的查询语言,最初由 Microsoft 于 1997 年作为 OLEDB for OLAP
规范引入,随后集成在 SSAS
中。目前,在 OLAP
数据库中被广泛采用。
OLAP
:即On-Line Analytical Processing
,翻译为联机分析处理。OLAP
分析分为关系型联机分析处理(ROLAP
)、多维联机分析处理(MOLAP
)两种
select < Axis Expr >[ ,< Axis Expr >] from [cube] where < set >
SQL
(Structured Query Language
) 是一种用于管理关系型数据库的编程语言,包含 DQL
(查询)、DML
(增删改)、DDL
(定义修改元数据) 和 DCL
(权限、事务控制)。为了方便阐述和 MDX
的区别,本文只涉及 SQL
的查询部分。SQL
查询语法示例如下:
select < column expr >[, < column expr>] from [table] where < expr>
举个🌰,需要查询 2019年所有省份的电子产品的销售额。
**用 MDX
表示为:
select [Region].[Province].members from [Sales] where ([Time].[Year].[2019], [Product].[Category].[Electronic Prodcut])
用 SQL
表示为:
select region.province from sales join region on sales.region_id = region.id join time on sales.time_id = time.id join product on sales.product_id = product.id where time.year = 2019 and product.category = "Electronic Prodcut"
MDX
和 SQL
查询的主要区别:
MDX
选择的主体,即select
部分,是维度度量或其表达式。SQL
选择的主体是列或列的表达式。MDX
查询的主体,即from
部分,是多维数据集(Cube
),是提前join
和聚合好的数据,查询时不需要指定join
关系。SQL
查询的主体是关系表(table
),是一条条的明细记录,查询时需要指定表之间的join
关系。
MDX
和 SQL
的差异:
MDX
查询对应的是多维视图,而SQL
对应的是关系视图,在聚合查询的语法上MDX
要简单许多。MDX
接口暴露的语义模型更加丰富和业务友好,而SQL
接口暴露的语义模型相对简陋,需要后续再定义。MDX
计算表达能力更加丰富,能够更好地支持复杂分析场景。
03
—
多维数据库的产品
目前有两种 MDD
的 OLAP
产品:基于多维数据库的 MOLAP
和基于关系数据库的 ROLAP
。ROLAP
建立了一种新的体系,即星型结构。
MDD
并没有公认的多维模型,也没有像关系模型,那样标准地取得数据的方法(如 SOL
、API
等)。基于 MDD
的OLAP
产品,依据决策支持的内容使用范围也有很大的不同。
低端产品
用户使用基于单用户或小型LAN的工具来观察多维数据。
由于受到规模的限制,它们不具备
OLAP
的所有特性。这些工具使用超立方结构,将模型限制在行维形态。当模型足够大且稀疏数据没有控制好时,这种模型将会不堪一击。
这些工具使用的大小是以的 MB 来计量,而不是以 GB 计量的,只能进行只读操作,且具备有限的复杂计算。
高端产品
OLAP
工具用4GL
提供了完善的开发环境、统计分析、时间序列分析、财政报告、用户接口、多层体系结构、图表等许多其他功能。不同的
OLAP
工具使用各自的多维数据库,但在不同程度上也利用了关系数据库作为。因为关系数据库和
OLAP
工具同时在高端服务器上处理,所以速度和效率仍然很快。纯多维数据库引擎也被开发出来。尽管缺乏
4GL
及充分的开发环境,但却有比高端MDD
工具所使用的数据库更为复杂的数据库。这些工具也具有统计分析、财务分析和时间序列分析等功能,并有自己的API
,允许其对前端的开发环境开放。
MDD
能提供优良的查询性能。存储在 MDD
中的信息比在关系数据库中的信息具有更详细的索引,可以常驻内存。MDD
的信息是以数组形式存放的,所以它可以在不影响索引的情况下更新数据。因此 MDD
非常适合于读写应用。
04
—
总结
本文主要介绍了多维数据库,从结构到语言再到产品,逐次递进。给大家一个多维数据库的初步认识,多维数据库在教学阶段基本上不会遇见,但是在公司里却经常遇到,比如一些财务分析系统,往往是以多维数据库为底层的,所以希望这篇文章能对实际工作的家人们有帮助。
本期就到这了,这里是花栗鼠小K,下次有🌰,我再来,拜拜~~~
关注六只栗子,面试不迷路!
05
—
参考文献
多维数据库
复杂分析场景,SQL or MDX ?
深入浅出,一文搞懂多维数据库、数据库和数据仓库的关系
什么是多维数据库?
多维数据库
作者 花栗鼠小K
编辑 一口栗子
原文始发于微信公众号(六只栗子):初窥多维数据库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88444.html