【问题标题】:Object Database, business intelligence and warehousing对象数据库、商业智能和仓储
【发布时间】:2009-09-07 22:43:50
【问题描述】:
很抱歉,这似乎是一个新手问题,但我是数据仓库和商业智能领域的新手。
从我的阅读中可以看出,由于关系模型的限制,需要一个多维数据库。您需要对多维数据库执行的任何操作都可以在具有非常复杂的查询和性能缓慢的联接和聚合操作的普通关系数据库上完成。
问题是当我们谈论对象数据库的商业智能时,我们是否需要相同的概念(多维数据库 - 数据仓库等)?对象数据库没有连接,因为对象之间的关系由直接引用维护。
【问题讨论】:
标签:
data-warehouse
object-oriented-database
【解决方案1】:
多维性是数据仓库的基本特征。
它不是关系模型限制的“解决方法”。在您需要对多个重要维度的事实进行任意“切片和切块”分析时,这是对数据进行建模的最佳方式。
星型查询不是很复杂。它们实际上非常简单,因为它们几乎总是采用SELECT SUM(MEASURE) FROM FACT JOIN DIM1 ON ... JOIN DIM2 ON ... WHERE... 的形式。
连接操作——通常——很慢。但是,可以在面向对象的代码而不是 SQL 仓库中完成连接。
在许多情况下,大多数维度实际上都相当小并且完全适合内存。分析查询可以转为简单地获取所有事实,然后在内存中查找维度属性。
在其余情况下,我们有一个雪花模式,其中一个维度(通常是客户、患者或成员维度)几乎与相关事实表一样大。在这种情况下,数据库中的关系连接很有帮助。
“对象数据库没有连接,因为对象之间的关系由直接引用维护。”
不完全正确。对象数据库具有从对象到对象的导航。如果您检索一组对象及其相关对象,则实际上将执行连接操作。
“问题是当我们谈论对象数据库的商业智能时,我们是否需要相同的概念(多维数据库 - 数据仓库等)?”
是的。多维性是必不可少的。绝对地。对象数据库将与关系数据库一样(或可能更好)代表这一点。然而,任何一种模型都必须代表度量及其维度的基本真理。
【解决方案2】:
也许你最好看看所谓的文档数据库。 CouchDB 很受欢迎,开源(免费获取和剖析)并且易于理解。 CouchDB 将所有数据存储为 JSON(易于解析的 JavaScript 对象表示法)文档,并仅使用 REST(如果您不熟悉此功能,只需 HTTP)与外界通信。 CouchDB 更有趣的功能之一是您可以使用 MapReduce 范式选择数据来处理和聚合数据。
查看 CouchDB 可能会让您了解非关系型数据库的一些可能性。知道 CouchDB 主要关注存储数据文档而不是整个对象。一些数据库是真正的对象数据库,因为它们将给定对象的状态存储在程序中。比较db4o。