【问题标题】:Database Design for Historical Aggregation历史聚合的数据库设计
【发布时间】:2011-12-20 16:43:39
【问题描述】:

我正在尝试确定最佳数据仓库类型设计。它将用于使用 Google 类型搜索查找不同项目在不同时间段内的历史平均价格。例如,股票 A 本月、300 万、600 万和 1 年前的平均价格是多少?问题是我没有可以使用的项目名称,我有关于该项目的描述字段。

这意味着我不能将项目聚合到视图中,因为同一个项目可能会列出 20 次,每个都有不同的描述,所以我必须在描述字段上即时进行全文搜索,获取价格插入日期

所以我最好的办法是把所有东西都放在一张桌子上,比如:

            MAIN
----------------------------
ID | Description | Price | Date

或许多表:

    DESCRIPTION
------------------
ID | Description | 


   PRICE
---------
ID | PRICE

只需加入即可获取我想要的数据。该数据库将包含几百万行。如果我有办法获得项目的真实名称,我可以看到预先聚合数据,但这不是我的选择。我很感激任何建议!

【问题讨论】:

    标签: mysql database-design data-warehouse


    【解决方案1】:

    我会说选项 2 ... 将顶级详细信息保留在“描述”表中。以及“价格”表中的历史数据(尽管添加了一个日期字段来捕获时间值)

    【讨论】:

    • 这可能是我最好的选择,因为我使用的是 mysql,它可以让我运行 myisam 仅在描述表上进行全文搜索,其他都可以是 innodb。
    【解决方案2】:

    正如 Joel 所建议的,选项 2 可能会为您提供更大的灵活性。我建议在每个表中包含额外的日期,以适应缓慢变化的维度。给定项目的描述和其他属性可能会随着时间而改变。

    在实体零售商的情况下,您很可能也会包含商店 ID,因为由于竞争和特定地点附近客户的人口构成,商品在不同地点的价格很可能会有所不同。

        DESCRIPTION
    ---------------------------------------------------
    ID | Description | Effective Date | Expiration Date
    
    
       PRICE
    -----------------------------------------------------------
    ID | Location ID | Price | Effective Date | Expiration Date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多