Ham*_*ood 4 oltp denormalization relational-database dimensional-modeling database-schema
我在一些问题上感到困惑.我需要他们的答案.如果我们的关系模型也是去标准化那么为什么我们更喜欢维度模型?我们更喜欢维模型而不是关系模型的原因是什么?您的历史数据也可以存储在OLTP中,您可以在任何OLTP上轻松执行报告,然后我们使用维度模型和数据仓库?维度和非规范化表之间有什么区别?
提前致谢
简短回答:
如果您从OLTP表中查找/检索的速度足够快,并且您的特定搜索要求没有如下所述的复杂性,那么就不需要进入任何维度星型模式.
答案很长:
尺寸和非规范化模型具有不同的目的.维度模型通常用于数据仓库方案,并且在计算数字(例如"按地区按季度销售"或"由销售人员")需要超快查询结果的情况下特别有用.在预先计算这些数字之后,数据存储在Dimensional模型中,并根据某些固定的时间表进行更新.
但即使没有涉及数据仓库,Dimensional模型也可能有用,其目的可以补充Denormalized模型,如下例所示:
A Dimensional model可实现快速搜索.在dimension tables和之间的连接fact table设置在一个star-schema.搜索John Smith将被简化,因为我们将仅在相关维度表中搜索John OR Smith,并从事实表中获取相应的人ID(事实表FK指向维度表PK),从而使所有人都获得他们名下的2个关键字.(进一步的增强将使我们能够通过建立尺寸搜索所有在其名称中具有"John Smith"变体的人,例如John,Jon,Johnny,Jonathan,Smith,Psmith,Smythesnowflake.)
一Denormalized model,在另一方面,能够快速检索,比如返回回了很多关于特定项目的列,而不必连接多个表在一起.
因此,在上面的场景中,我们首先使用Dimensional模型为我们感兴趣的人获取一组ID,然后使用Denormalized表获取这些选定ID的完整详细信息,而无需进行任何进一步的连接.
如果我们直接查询非规范化表,这种搜索会非常慢,因为需要在PersonName列上进行文本搜索.如果我们尝试包含名称变体,或者如果我们需要添加更多搜索条件,它会变得更慢.
优秀参考:
Ralph Kimball是一个很好的参考,用于了解维度建模的巨大(也是非常有趣)主题The Data Warehouse Lifecycle Toolkit.其配套卷The Data Warehouse Toolkit涵盖了大量实际用例.
希望这可以帮助!
维度模型使用非规范化作为其技术之一,以优化数据库: - 查询性能,以及 - 用户理解。
OLTP 系统通常很难报告,而且速度也很慢,因为它们是为 OLTP(插入、更新、删除)性能和保护事务完整性而优化的。使用维度模型的数据仓库仍然使用关系技术,但进行了优化以考虑获取数据而不是获取数据的体验。
事实是,您不能总是从任何 OLTP 系统轻松报告:这些表格的标题通常很模糊,而没有考虑到人们想要获取数据来做出业务决策。生成 SQL 的报告工具也很难对典型的规范化模式进行高性能查询。
OLTP 技术的现代进步提供了解决性能问题的维度模型的替代方案,但仍然没有解决创建维度模型时所做的典型步骤,以使数据库表更易于理解和导航。
维度是用于表示业务概念或实体的表,为业务流程(或“事实”)的特定度量提供上下文。维度通常在维度模型中进行非规范化,以减少要理解/导航的表的数量,而且出于性能原因减少连接的数量。例如,产品维度可能会联系品牌信息,而在 OLTP 模型中,这些将是单独的表,这允许用户直接按品牌过滤事实,而无需遍历多个表。
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |