使用ActiveRecord与数据仓库式表对话?

Mik*_*use 5 ruby activerecord ruby-on-rails data-warehouse

随着我的Rails应用程序的成熟,它变得越来越明显,它具有强大的数据仓库风格,缺少一个事实表来使一切都明确.

最重要的是,我刚刚阅读了Ruby Best Practices的第2章(设计美丽的API)和3(掌握动态工具包).

现在我想弄清楚如何最好地设计事实检索部分......

假设我有以下尺寸(应用中的现有模型):

  • 产品(包含资金)
  • 基金
  • 衡量(例如总持股,平均持股,平均风险)

...和一个很好的旧通用事实:

  • 事实(日期,值,加上我的每个维度的外键NULLable列)

在某些方面,我很乐意得到一些建议:

  • 什么可能构成灵活的检索界面?
  • 如果我的事实同时具有NULL(即全部或不关心)和NOT NULL(特定)维度的值,会发生什么?一个伪值如何:all?或者某些惯例是否适用?
  • 如何只选择维度值的子集?或者排除一个子集?:只有和:排除?
  • 有没有人有创建named_scopes来处理这个问题的经验?能够为每个感兴趣的维度链接一个明显的吸引力,但是如果我们达到7或8维度,它是否变得太笨重了?

(我知道一个acts_as_fact插件被认为以某种形式存在(至少在RailsConf 2006中有一些小嗡嗡声)但我找不到任何代码或描述它如何起作用.)

版本:Rails,ActiveRecord 2.1.2,Oracle增强适配器1.2.0

编辑:我看了一下ActiveWarehouse并有一些保留意见: - 主要分支机构自08年11月以来没有承诺,自09年1月以来没有任何活动; - 教程可以追溯到2006年,被认为已经过时了,404对我来说; - 它似乎想要远离ActiveRecord - 我的应用程序的大部分将保留在AR中,我认为目前我想要一个AR解决方案.

所以我会避开那个,谢谢!

Mik*_*use 0

因此,我们有许多复杂程度不同的宝石或插件,但似乎没有一个正在积极开发(或者有一些事情正在发生,但在雷达之下)。

无论如何,我不想构建一个数据仓库,只是为了以星型模式样式实现一两个事实表。我想要的是关于如何访问这样一个表的想法。

我倾向于放弃多级别的想法,其中跨维度的聚合将在该维度的外键中具有 NULL。虽然它会减少查询中涉及的行数,但好处很小而且不是免费的:我将拥有更大的事实表和更复杂的代码。

检索看起来可能会用一组named_scopes(每个维度一个)来处理,以进行过滤。或者使用适当构造的哈希的自定义查找器可能会更好。

当我构建它时,我会回来提供一些更好的信息......