Pra*_*ngh 15 olap database-design data-warehouse
我正在设计数据仓库架构.在探索从生产中提取数据并放入数据仓库的各种选项时,我遇到了许多文章,主要建议采用以下两种方法 -
- 生产DB ---->数据仓库(Star Schema)----> OLAP Cube
- 生产DB ----> 临时数据库 ---->数据仓库(Star Schema)----> OLAP Cube
我仍然不确定哪个是性能方面更好的方法,并减少生产数据库的处理负荷.
在设计数据仓库时,您发现哪种方法更好?
has*_*own 20
以下几点来自DWBI Organization的文章
如果您有以下任何一种情况,可能需要暂存区域:
性能和减少处理可能不仅仅是考虑因素.添加分段有时可能会增加latency
(即,在发生商业事件和报告之间的时间延迟).但我希望以上几点可以帮助你做出更好的判断.
Joe*_*Joe 10
ETL =提取,转换和加载.使用Transform位暂存数据库的帮助.我个人总是包括一个staging DB和ETL步骤.
临时数据库有助于将源数据转换为与数据仓库FACT和DIMENSION目标等效的结构.它还将仓库和仓库ETL过程与源数据分离.
如果您的数据仓库目标表几乎只使用一些其他维度字段映射您的生产数据库表,那么您可以忽略暂存数据库.这将节省您一点开发时间.我不建议你这样:
最有可能的是,您将执行某种数据操作(将日期转换为DATE_DIM键,聚合值),在这种情况下,登台DB将帮助您将转换逻辑和计算与数据仓库操作(标注数据)分开.
您可能也遇到过这种模式:
[PROD DB] -(ETL)-> [RAW DB] -(ETL)-> [STAGING DB] -(ETL)-> [DW DB] -(ETL)-> [DM DB]
Run Code Online (Sandbox Code Playgroud)
如果性能考虑很重要,您可能需要查看.在您的情况下,RAW_DB可能是生产数据库的精确1:1副本,创建它的ETL步骤可能只是从最近的夜间备份重新创建数据库.(传统上RAW_DB用于从各种外部源获取数据,每个字段都是纯文本,然后这些字段转换为预期的数据类型,遇到异常处理.当你有一个源和它时,这不是一个问题.一个很好的强类型规范化数据库)
在此RAW_DB中,下一个ETL过程将截断并填充分段,以使STAGING DB包含进入仓库的所有新/更新记录.
所有这些步骤的另一个好处是,它确实有助于调试奇怪的数据,因为对于任何给定的运行,您可以在每个差异数据库中查看记录值,并确定哪个ETL过程引入了悲伤.
使用中间暂存数据库有一些潜在的优点,这可能适用于您的情况,也可能不适用。没有完美的,一刀切的解决方案。一些潜在的优势包括:
也可能存在不利因素,这可能对您无关紧要。其中最主要的是必须拥有另一个数据库服务器。如果您使用同一台服务器托管生产和/或数据仓库数据库,则许多优点可能毫无意义。