关系数据库和多维数据库的本质区别是什么?
我就是不明白。我在互联网上找到的论点并没有让我明白,事实上它们大多根本没有任何意义。以下是一些示例:
- 关系模型通常很复杂;多维模型很简单
- 关系模型是扁平的,即。表格是二维的;多维模型可以有两个以上的维度
- 关系模型通常是标准化的;多维模型高度非规范化
- 关系模型将数据存储在表中;多维模型将数据存储在多维数据集中
- 等等...
大多数文本试图解释多维数据库如何比关系数据库更好(在性能、易用性和维护等方面),但它们没有解释它们之间的>形式差异确实如此。澄清一下:
关系数据库实现关系模型;如果多维数据库确实与关系数据库不同,那么它们必须实现不同的(非关系)模型,因为否则它们仍然是关系数据库,对吗?所以我的问题是:
多维数据库真的有不同的模型吗?如果是这样,它是否有正式定义?我在哪里可以找到有关它的文本?如果情况并非如此,那么区别是什么?
请赐教。
最佳答案
您询问的是在线事务处理数据库(又名 OLTP,例如 SQL Server、My SQL)和在线分析处理数据库(又名 OLAP,例如 Essbase、Sql Server Analysys Services SSAS)之间的差异。
它们的目的截然不同。对于常用应用程序(网站、桌面订单处理等)的数据存储,您必须使用 OLTP 数据库,因为它针对事务进行了优化:基本上是 CRUD 操作和一些报告。相比之下,OLAP 数据库在 CRUD 方面很糟糕(实际上我无法在我所知道的任何 OLAP 数据库中执行 CRUD),但在报告方面却非常出色。两人一起工作。
通常,您的 OLTP 数据库是主力。在某个时间间隔(每天、每周、更频繁、更少频率),您可以将整个 OLTP 数据库或只是新的部分提取到 OLAP 数据库中以进行报告。
两者的内部结构有很大不同。 OLTP 应该具有规范化的表,并且其代码(实际的服务器代码,而不是我们的代码)针对读/写混合进行了优化。 OLAP 数据库是非常非规范化的(因此在某些方面概念上更简单)并且针对读取进行了优化。这样做的好处是,我用于报告的 OLTP 数据库每天都会运行大量查询,每个查询需要 45 分钟以上。当我们向 OLAP 数据库添加每日提取时,这些报告的运行时间不到 5 秒。
但是,请记住,您不能使用 OLAP 数据库进行简单的 CRUD 操作,并且 OLAP 数据库将具有额外的许可成本、管理问题和更新时间问题:用户将超快地获取数据,但它一段时间后就会过时,并且需要额外付费。而且,它们可能很难维护。
关于database-design - 是否存在多维数据库模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114648/