-
2020-07-07 09:37:20
多维数据库&关系型数据库详细介绍
多维数据库详细介绍
多维数据库(Multi Dimensional Database,MDD)
可以简单地理解为:
- 将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。
- 因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。
多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。
目前有两种MDD 的OLAP产品:基于多维数据库的MOLAP和基于关系数据库的ROLAP。ROLAP建立了一种新的体系,即星型结构。
MDD并没有公认的多维模型,也没有像关系模型那样标准地取得数据的方法(如SQL、API等)。基于MDD的OLAP产品,依据决策支持的内容使用范围也有很大的不同。
在低端,用户使用基于单用户或小型LAN的工具来观察多维数据。这些工具的功能性和实用性可能相当不错,但由于受到规模的限制,它们不具备OLAP的所有特性。这些工具使用超立方结构,将模型限制在n维形态。当模型足够大且稀疏数据没有控制好时,这种模型将会不堪一击。这些工具使用数据库的大小是以MB来计量的,而不是以GB计量的,因此只能进行只读操作,且具备有限的复杂计算。
在高端,OLAP工具用4GL提供了完善的开发环境、统计分析、时间序列分析、财政报告、用户接口、多层体系结构、图表等许多其他功能。尽管不同的OLAP工具都使用了它们自己的多维数据库,但它们在不同程度上也利用了关系数据库作为存储媒体。因为关系数据库和OLAP工具同时在高端服务器上处理,所以速度和效率仍然很快。
纯多维数据库引擎也被开发出来。尽管这些工具缺乏4GL及充分的开发环境,但却有比高端MDD工具所使用的数据库更为复杂的数据库。这些工具也具有统计分析、财务分析和时间序列分析等功能,并有自己的API,允许其对前端的开发环境开放。关系型数据库详细介绍
关系型数据库的定义
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
关系型数据库的十二准则
全关系系统应该完全支持关系模型的所有特征。关系模型的奠基人埃德加·科德具体地给出了全关系系统应遵循的基本准则。
准则0
一个关系形的关系数据库管理系统必须能完全通过它的关系能力来管理数据库。
准则1
信息准则 关系数据库管理系统的所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示。
准则2
保证访问准则 依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。
准则3
空值的系统化处理 全关系的关系数据库管理系统支持空值的概念,并用系统化的方法处理空值。
准则4
基于关系模型的动态的联机数据字典 数据库的描述在逻辑级上和普通数据采用同样的表述方式。
准则5
统一的数据子语言 一个关系数据库管理系统可以具有几种语言和多种终端访问方式,但必须有一种语言,它的语句可以表示为严格语法规定的字符串,并能全面的支持各种规则。
准则6
视图更新准则 所有理论上可更新的视图也应该允许由系统更新。
准则7
高级的插入、修改和删除操作 系统应该对各种操作进行查询优化。
准则8
数据的物理独立性 无论数据库的数据在存储表示或访问方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性。
准则9 数据逻辑独立性 当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性。
准则10
数据完整的独立性 关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的。
准则11
分布独立性 关系数据库管理系统在引入分布数据或数据重新分布时保持逻辑不变。
准则12
无破坏准则 如果一个关系数据库管理系统具有一个低级语言,那么这个低级语言不能违背或绕过完整性准则。更多相关内容 -
多维数据库和空间多维数据的数学模型与人工智能.pdf
2021-07-10 21:44:56多维数据库和空间多维数据的数学模型与人工智能.pdf -
多维数据库和关系数据库(第六组).docx
2022-06-16 22:21:28目前有两种MDD 的OLAP产品:基于多维数据库的MOLAP和基于关系数据库的ROLAP。ROLAP建立了一种新的体系,即星型结构。基于MDD的OLAP产品,依据决策支持的内容使用范围也有很大的不同。 在低端,用户使用基于单用户... -
多维数据库和空间多维数据的数学模型与人工智能 (1).pdf
2021-07-10 22:20:19多维数据库和空间多维数据的数学模型与人工智能 (1).pdf -
懂多维数据库、数据库和数据仓库的关系
2020-07-07 09:47:57「干货」深入浅出,一文搞懂多维数据库、数据库和数据仓库的关系 2018-09-26 14:22 提到数据库,各位首先想到的应该是Oracle、DB2、MySQL、SQL Server这种关系型数据库(Relational Database),所以下文所称...「干货」深入浅出,一文搞懂多维数据库、数据库和数据仓库的关系
2018-09-26 14:22
提到数据库,各位首先想到的应该是Oracle、DB2、MySQL、SQL Server这种关系型数据库(Relational Database),所以下文所称数据库如不加说明均指关系型数据库。
大多数企业机构的IT系统中,基本都使用数据库表结构来设计数据物理模型,这是从应用系统的业务角度来看。实际上,从数据库自身角度出发,它所提供的表、字段、数据行是为了实现外界访问而提供的逻辑模型,真正的数据物理模型是操作系统文件。
不同的数据库虽然都提供标准SQL访问能力,但底层实现并不相同
多维数据库与数据库类似,都属于对数据进行存储与管理的基础软件。它为访问者提供的数据模型是维度与数据立方体(或称数据集市),同样,维度与数据立方体也是一种对外提供访问能力的逻辑模型,数据的真正物理结构还是存在于操作系统文件中。
Dimension与Cube经典图
三维空间中的立方体结构可以很形象的表现出多维数据库的逻辑模型,而真正多维数据库能够处理的维度数量应该是不限的。在头脑中想象出更高维度空间中的超立方体形状是很难的,好在虽然多维数据库的实现原理相当之复杂,但使用起来却相当简单。
多维数据库产品数量不像关系数据库那么多,主要应用领域与关系数据库(主要应用于业务级别的增删改查操作 )也不尽相同,多维数据库主要用于数据分析。
关系数据库使用SQL作为查询语言,多维数据库则利用MDX作为查询语言,MDX与SQL看上去非常类似,这会造成一些混淆,文章后部会讲解。
MDX与SQL
在讲数据仓库之前,先来说说仓库。
仓库是什么?这个问题估计任何人都可以回答,而且答案也很一致。无论是物流仓库、制造车间零部件仓库或是商场存货仓库,无论仓库是大是小,其最基本且最主要功能都是有序、妥善的保管仓库中的物品。
数据仓库顾名思义,就是数据的仓库。
与前文所述的关系数据库和多维数据库不同,数据仓库并不是一种基础软件,也并没有一种称之为数据仓库的软件产品。数据仓库本身是一个概念,当一个可以对数据进行有序管理、快速查询的数据存储体系被建立起来,就可以说这是一个数据仓库。
绝大多数数据仓库的建设目的都是为了进行数据分析与挖掘,基本都是基于关系数据库与多维数据库建立,由于目前数据存储方式的多样化,也有其他的方案,如分布式数据存储或微服务数据管理系统。
数据的仓库
下文以一个数据分析体系的演变过程来说明数据库、多维数据库、数据仓库的关系。
第一阶段。
企业信息化达到一定程度之后,一定会有报表的需求,此时直接从业务系统的数据库进行查询。
第二阶段。
直接查询业务系统数据库,很容易对业务系统造成影响,这时可能会将数据抽取出来,放在一个镜像数据库里进行查询。
第三阶段。
当数据规模越来越大,报表与数据分析的需求也随之增多。开始对数据进行系统化的规划与管理时,数据仓库的雏形也已建立起来。
关系型数据库的星形(或雪花型)结构是数据仓库的常见形式之一,但不是唯一的形式,只要能做到将数据有序管理,基本上就可以称之为数据仓库。
当建立起心形或雪花型的数据仓库的时候,已经可以做一些基本的数据分析了。但是会有一些弊端。星形或水上行结构虽然模拟了多维数据模型,但是其本质上还是关系型数据库的表字段以及数据行的模型。无法做到真正意义上的面对业务时的数据分析。而且这种直接建立在关系型数据库之上的模型,很难让业务人员自主进行数据分析。
第四阶段。
基于关系数据库星型或雪花型结构所建立的数据仓库,虽然可以进行数据分析,但分析能力不强。
星型或雪花型结构虽然模拟了多维数据模型,但其本质上还是关系型数据库的表及字段模型,无法做到真正意义上面向业务的数据分析,而且这种直接建立在关系型数据库之上的模型,很难让业务人员独立进行数据分析。
第五阶段。
由于多维数据库维度既业务的特性,所以基于多维数据库所建立的数据体系的分析能力要强很多,而且也能将让业务人员自主分析这一目标落地实现。
多维数据库向外提供维度与数据集市模型,数据的实际物理存储则对外屏蔽。关系型数据库可以作为多维数据库的一种底层实现,当然还有其他的方式,比如数据块文件、分布式存储等。
前文我们提到过关系型数据库的星型(或雪花型)结构容易与多维数据库的维度与数据立方体结构产生一些混淆,主要是由于以下两点原因:
- 多维数据库可以使用关系数据库作为数据实际存储方案;
- 多维数据库的MDX与关系数据库的SQL在语法结构上的类似。
以上两点原因使得在关系数据库的星型(或雪花型)模型上使用SQL进行查询被误认为是可以进行多维分析的,实际上这是非常错误的认识,原因在于表及字段模型和维度及数据立方体模型本质上的区别。
正是由于以上混淆的地方,使得很多的数据仓库和商业智能系统的实际效果不如预期。
关于多维数据库,传统的划分方式有ROLAP、MOLAP、HOLAP,现在随着大数据概念的兴起,分布式数据存储与微服务架构已经成为了多维数据库的新的实现方式,相关内容会在后续文章中发布。
-
多维数据库 Oracle Essbase 和 IBM Cogons 底层原理
2021-05-02 03:48:02gooood个人博客网站数据库多维数据库(Multi Dimensional Database,MDD)使用Dimension(维度)和Cube(数据立方体、数据集市)模型描述数据。多维数据模型关系型数据库(Relational Database,RDB)中的星型结构或雪花型...gooood个人博客网站
数据库
多维数据库(Multi Dimensional Database,MDD)使用Dimension(维度)和Cube(数据立方体、数据集市)模型描述数据。
多维数据模型
关系型数据库(Relational Database,RDB)中的星型结构或雪花型结构就是模拟上述多维模型结构的,但无法提供真正意义上的多维数据分析能力,这里不做过多解释。
下文讲解Oracle Essbase以及IBM Cogons这种真正的多维数据库的原理。
多维数据库中模型结构与事实数据分别以概要文件(profile)和数据块(data block)的形式存在。
profile和data block
概要文件用来描述以下信息:
维度和维度成员信息
与维度相关的层级(Hierarchy)和级别(Level)信息
Cube的描述性信息,以及Cube与维度的关联性
其他描述性的信息,如实体模型属性
Cube中度量数据存放在data block中,data block可以被理解成为多维数组结构,其大小与相关维度的明细成员数量有直接关系。
计算公式:data block size = 维度1明细成员总数 * 维度2明细成员总数 * …… * 维度N明细成员总数
数据块容量等于相关维度明细成员数量的笛卡尔积。
数据块大小
明细度量值一般采用double类型,按8bytes算,上图所描述的Cube的数据块大小为480bytes。
除了数据块中的明细度量值外,其他非明细度量值并没有直接存储,因为其可以通过对应的明细度量值计算出来。
非明细度量值计算方式
一些不存在的度量值会造成数据空洞问题,假设2018年4季度河北省B品牌手机的销售量是未知的,则会在数据块中产生一个空洞。
注意:数据空洞表示不存在的值,与数值0的意义不同,数值0表示一个有意义的值。
如果数据空洞比较多,则数据块的数据密度就会下降,将造成存储空间的浪费。
数据空洞
除了数据空洞问题,还存在数据爆炸问题。数据块大小由全部维度明细成员数量的笛卡尔积决定,假如某个Cube关联三个维度,每个维度明细成员数量均为100,则:data block size = 100 ^ 3 = 1000000,如果度量值按double类型存储(8bytes),数据块文件大约为7.62M。如果每个维度明细成员数量增加至150,则数据块文件将膨胀到25.74M(data block size = 150 ^ 3 * 8bytes / 1024 / 1024)。
当数据块极度膨胀并且存在很多数据空洞的时候,会极大地浪费存储空间,并且可能导致数据存储无法实现。
极度膨胀和存在大量空洞的多维数组
为了解决数据空洞和数据膨胀问题,引入了密集维度组合和稀疏维组合的概念。
判断维度组合是密集还是稀疏的原则是看其所对应的明细度量值的存在情况,例如:
北京地区只有ABC三种手机的销售额,天津地区只有BCD三种手机的销售额,河北地区卖出的手机只有AE两种,表明并不是每个地区对于每一种手机都有销售额,所以地区与产品属于稀疏的维度组合。
2018年的四个季度都有手机销售额,所以日期维度自身可以构成密集的维度组合。
注意!在其他讲解多维数据库的文章中都把维度分为稀疏维与密集维,这是非常错误的,对于维度本身来讲没有稀疏与密集之分,稀疏与密集表示的是维度之间的组合!对于有N个维度的Cube而言,如果其只有一个维度退化成索引,或者有N - 1个维度退化成索引,则此时稀疏与密集的维组合只包含一个维度,但这只是一种特例,并不代表维度本身是稀疏或密集的。
在引入稀疏与密集的维度组合之后,原本由于数据空洞和数据爆炸而失控的数据块结构将变成索引和密度相对较高的小数据块结构。
索引和小数据块
-
多维数据库
2022-07-15 14:52:31多维数据库目录
5. OLAP(Online Analyze Process 在线分析处理)
1. 多维数据是什么?
多维数据库(Multi Dimensional Database,MDD)可以简单理解为把数据存放在一个n维数组中,而不是像关系数据库那样以记录形式存放,因此它存在大量稀疏矩阵(因为很多维度可能没有数据)。它的优势在于可以提高数据处理速度,加快反应时间,相当于是以空间换时间的做法。
稀疏矩阵:
在矩阵中,如果数值为0的元素数目远远多于非0元素,则为稀疏矩阵;反之,则为稠密矩阵。
(关系型)数据库、数仓、多维数据库:
- 数据库中一般存放的是业务属性的表
- 为了进行数据分析和挖掘,建设数仓
- 为了更强、更快,且面向业务的数据分析,就会建立多维数据库
2. 多维数据库用来做什么?
多维数据库主要用于OLAP(Online Analyze Process 在线分析处理)。它们可用于向用户显示多维数据。
3. 为什么要多维分析?
- 为什么要分析:(1) 看清业务现状;(2) 预测业务走势;(3) 数字驱动业务,发现问题并调整
- 为什么要多维:(1) 不同角色关注不同维度;(2) 人岗匹配,不同岗位的关键指标不同
不同角色关注不同维度:
- 销售经理关心各个地区的销售情况,希望找出销售增长率在平均水平之下的地区
- 产品总监则希望了解近期内各种产品的销量对比,以作为后期产品研发方向的参考
- CEO想要知道近六个月内整体销售环比信息,用以评估是否达到公司运营目标
- 同比:与去年同时期相比的变化比
- 环比:与上个统计周期相比的变化比
4. 多维数据分析领域中的概念
- 数据立方体(Cube)
- 维度(Dimension)
- 维度成员(Member)
- 度量(Measure)
- 级别(Level)
数据立方体(Cube):
维度(Dimension): 维度成员(Member):维度是坐标轴,维度成员是坐标值
度量(Measure):多维数组的取值 级别(Level):维度成员观察数据的粒度
5. OLAP(Online Analyze Process 在线分析处理)
OLAP是一项在线数据分析技术。它能够基于数仓看清业务现状,预测业务走势,为业务决策提供数据支撑。
OLAP如何工作?
- 从多个数据源(如mysql、excel、xml)收集数据并存储到数仓
- 然后清理并组织成数据立方体
OLAP可以对 多维数据库 执行的5种操作:
- 汇总:汇总数据和维度
- 下钻:在数据维度中更深入分析,省下钻市,年下钻月
- 切片:执行分析显示一级信息,如“2022年销售额”
- 切块:多个维度进行分析,如“陕西省2022年手机销售额”
- 旋转:通过旋转多维数据集的数据轴来获得新数据视图
OLAP(在线分析处理)分为三种类型:
- MOLAP(多维OLAP):MOLAP是一种基于多维数据库索引的OLAP
- ROLAP(Relational OLAP):ROLAP是基于关系型数据库的动态多维OLAP
- HOLAP(混合OLAP):HOLAP是MOLAP和ROLAP的集成
6. Mondrain
mondrain是基于java语言的OLAP引擎,它接收MDX查询语句,从关系型数据库中读取数据,然后通过java API以多维度的形式展示查询结果。
mondrain架构:
mondrain机构可以分为四个层次,表现层、计算层、聚合层、存储层
- 表现层:用多种方法展现多维数据,包括饼、柱、线状图、数据透视表。特殊点在于,它是基于taglib而不是SpringMVC
- 计算层:分析、验证、执行MDX语句,先计算坐标轴,再计算单元格。计算层从聚合层批量获取单元格数据集合
- 聚合层:聚合层中缓存了多维查询结果,即单元格数据集合。如果计算层所需的数据不在缓存中,就从存储层查询数据并缓存。
- 存储层:采用关系数据库实现,一般采用星型模型,提供维表、事实表和聚合表
7. KylinKylin是一个OLAP系统,主要用于大数据分析。它对Hive中的数据预计算,充分利用Hadoop中的MapReduce框架的并行处理能力实现,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问。是一种用空间换时间的解决方案。
Mondrain是一个ROLAP系统,所有的查询可以通过实时的数据库查询完成,而不会有任何预计算,但是会将查询结果缓存在程序内存中。
Kylin是一个MOLAP系统,对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问。
Kylin架构:
Kylin默认的数据源是Hive,构建技术主要是MapReduce,将构建好的Cube保存在存储引擎(默认HBase)中。
核心组件:
- REST Server:让用户能通过Restful接口实现SQL查询、构建Cube等
- 查询引擎:当Cube准备就休后,通过查询引擎获取并解析用户查询
- 元数据管理工具:对Cube元数据进行管理
- 任务引擎:处理所有的离线任务,包括Java API、MapReduce任务等
-
数据仓库之建立多维数据库
2021-01-28 04:21:441.有了生产库, 通过cdc捕获数据变化, 通过ssis 将数据保存到数据仓库里面, 现在要做的就是建立多维数据集SSAS进行数据统计分析.2.本地环境搭建好多维数据集之后, 如何发布到正式环境呢? 总不该说在正式服务器上也装... -
国产多维数据库 NeuralCube!中国人自己的大数据底层核心技术! ...
2019-01-08 12:07:25商业转载请联系作者获得授权,非商业...数据库的概念是非常宽泛的,除了上述的关系数据库,还有NoSQL(Not Only SQL)数据库,还有一些基于分布式技术框架(Hadoop、Spark)的大数据存储和处理体系也被称为数据库... -
什么是多维数据库
2019-06-10 15:13:46多维数据库集就像一座楼,这座楼是由一个一个往后延伸的平面组成,一个平面就是二维,再加上一个描述第几个平面的就属于三维了,如果是很多这样的楼(比如一个小区)你需要定位一家楼房的位置,是不是还要描述在小区... -
多维数据库概述之一---多维数据库的选择
2016-12-28 15:34:221. 多维数据库简介多维数据库(Multi Dimesional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据... -
多维数据库介绍【转】
2018-07-05 11:43:001. 多维数据库简介 多维数据库(Multi Dimesional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据... -
essbase总结,多维数据库
2010-11-02 16:46:02设置两遍计算 理解基本维与属性维及其成员的规则 -
数据仓库多维数据库模型.docx
2020-10-20 22:12:56一种把相关的各种数据转换成有商业价值的信息 的技术 1从数据库到数据仓库 数据库系统能够很好的用于事务处理但它对分 析处理的支持一直不能令人满意特别是当以业务处 理为主的联机事务处理OLTP应用和以分析处理 为... -
基于多维数据库的海量零售数据处理系统设计与实现.pdf
2021-08-15 00:49:16#资源达人分享计划# -
数据仓库多维数据库模型.ppt
2020-07-06 08:41:43第 14 讲 数据仓库 一基本概念 随着数据库技术的应用普及和发展人们不再仅 仅满足于一般的业务处理而对系统提出了更高的要 求 提供决策支持 数据库技术 何谓数据仓库 一种面向分析的环境 一种把相关的各种数据转换成... -
数据仓库多维数据库模型PPT学习教案.pptx
2021-10-08 07:02:29数据仓库多维数据库模型PPT学习教案.pptx -
多维数据库和空间多维数据的数学模型与人工智能 (2).pdf
2021-07-10 23:00:44多维数据库和空间多维数据的数学模型与人工智能 (2).pdf -
思迈特软件Smartbi:数据库、多维数据库及数据仓库的关系
2021-09-02 10:55:12企业信息化达到一定程度之后,一定会有报表的需求,此时直接从业务系统的数据库进行查询。 第二阶段 直接查询业务系统数据库,很容易对业务系统造成影响,这时可能会将数据抽取出来,放在一个镜像数据库里进行... -
HFM深入技术学习系列之一-多维数据库
2021-11-03 11:28:463 了解多维数据库的相关理论和知识,这些在编制数据表单脚本和规则时是需要的。 4 VBSCRIPT的基本语法。 前面两条可以听一些财务方面的课程,本系列从多维数据库开始记录学习过程。 多维数据库的理论依据 HFM的很多... -
多维数据源-基于oracle数据库新建多维数据源
2021-05-02 03:47:111、 使用PLSQLDeveloper工具创建一个schema,并恢复数据库;2、 将cube文件命名为FoodMartCN.xml,然后放置到/webapps/Mondrian/WEB-INF/queries文件夹下面,如图:3、 右键编辑FoodMartCN.xml文件,将文件中所有的... -
多维数据库介绍
2014-05-13 08:58:411. 多维数据库简介 多维数据库(Multi Dimesional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察... -
数据挖掘与基于多维数据库的在线分析系统OLAP浅析.pdf
2021-07-14 14:57:22数据挖掘与基于多维数据库的在线分析系统OLAP浅析.pdf -
商业智能_分析服务_多维数据库的设计和维护.ppt
2012-09-10 14:34:16商业智能 分析服务 多维数据库的设计和维护 -
多维数据库和OLAP分析
2009-08-22 12:44:54联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的。当时,Codd认为联机事务...用户的决策分析需要对关系数据库进行大量计算才能得到结果,E.F.codd提出了多维数据库和多维分析的概念,即OLAP。 -
星型模型和olap多维数据库
2020-02-06 10:14:35而olap多维数据库是真实存在的一种数据形式,源自星型模型,通过星型模型的构建理念得到的事实表和维度表关联之后的数据集合, 它具备许多不同的分析角度的维度,方便分析人员进行不同维度、不同需求的数据分析。 ...