database-design - 是否存在多维数据库模型?

标签 database-design relational-database rdbms database

关系数据库和多维数据库的本质区别是什么?

我就是不明白。我在互联网上找到的论点并没有让我明白,事实上它们大多根本没有任何意义。以下是一些示例:

  • 关系模型通常很复杂;多维模型很简单
  • 关系模型是扁平的,即。表格是二维的;多维模型可以有两个以上的维度
  • 关系模型通常是标准化的;多维模型高度非规范化
  • 关系模型将数据存储在表中;多维模型将数据存储在多维数据集中
  • 等等...

大多数文本试图解释多维数据库如何比关系数据库更好(在性能、易用性和维护等方面),但它们没有解释它们之间的>形式差异确实如此。澄清一下:

关系数据库实现关系模型;如果多维数据库确实与关系数据库不同,那么它们必须实现不同的(非关系)模型,因为否则它们仍然是关系数据库,对吗?所以我的问题是:

多维数据库真的有不同的模型吗?如果是这样,它是否有正式定义?我在哪里可以找到有关它的文本?如果情况并非如此,那么区别是什么?

请赐教。

最佳答案

您询问的是在线事务处理数据库(又名 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/

相关文章:

database - 如果实现 hellbanning,什么是有效的方法?

database - 代理与自然/业务 key

sql-server - 在 SQL 与 HBase 之间转换(同步)数据

mysql - 在mysql中添加一个临时列,该列的条目是表中相同条目的计数

mysql - 第一个具有引用完整性约束的数据库——建议、反馈、错误?

database - 在数据库列中存储分隔列表真的那么糟糕吗?

database - 我应该将表名和列名始终小写吗?

mysql - 确定MySQL多对多关系中的记录缺失

database - Excel 可以将自己用作数据库吗?

mysql - 是否有时联结表会增加不必要的复杂性?