gpt4 book ai didi

sql-server - 在数据仓库中加载数据的最佳方式

转载 作者:行者123 更新时间:2023-12-04 02:58:27 24 4
gpt4 key购买 nike

我们正在从头开始构建一个新的近乎实时(每 10 分钟刷新一次)的医院数据仓库。数据位于 oracle 数据库中,我们计划使用 SSIS 包从 Oracle 中提取数据并加载到 SQL Server 数据库中。我是 DWHousing 的新手,需要有关构建 DWH 的建议。

问题:

  1. 从 Oracle 中提取数据时,我应该导入完整的表还是应该只获取我想要的选定列?例如:如果我有 person、address、facility_hist 表,我应该将它们加入提取包中并只获取选定的列吗?或者我应该在暂存区中分别提取所有三个表,然后将它们合并并加载到 SQL Server 中。

2)应该在目标表上创建索引还是在提取数据时创建索引?

  1. 我计划通过对记录使用 create_dt_tm 来分批进行初始加载,并在几个月内加载数据。加载所有内容后,我们计划使用 updt_dt_tm 并加载最近 10 分钟内完成的所有更新。

  2. 连接到数据库以每 10 分钟获取一次数据是个好主意吗?

图像显示了我计划使用的 DWH ETL SSIS 包(而不是平面文件,我将把它连接到 oracle 数据库)

enter image description here

最佳答案

这是一个非常广泛的问题,您还没有深入了解将源医疗数据映射到业务友好的星型模式。

数据仓库要求和十分钟要求从何而来?业务的更重要驱动因素是什么:只有十分钟的延迟,还是具有一致的正确信息?我想重点是运营(准入等),而不是财务或人力资源?

When extracting the data from Oracle should I import the complete tables or should I get only selected columns which I want? For example : If I have person,address,facility_hist tables should I join them in the extracting package and only get the selected columns? or should I extract all three tables separately in staging area and then combine them and load them in SQL Server.

在“ODS 层”方法中,SQL 数据库中有 Oracle 表的完整副本(通常在不同的 SQL Server 架构中。注意 Oracle 和 SQL Server 中的“架构”含义略有不同)

ODS 基本上是源系统的副本。如果您想要 10 分钟的刷新,那么您需要将增量(仅更改)加载到您的 ODS 中。为此,您需要知道自上次加载 ODS 以来源代码发生了什么变化。如果源中有“最后更改”字段,这很容易。否则会变得非常困难。

当数据按层批处理时,ODS 方法符合“批量加载”模式。 ODS 允许您在不同层进行测试和故障排除。

ODS 方法不同于“流”方法,后者支持实时报告,但在整个流中都包含孤立的转换规则。

Indexes should be created on the target tables or while extracting the data?

通常应该在数据加载之前在表上禁用/删除索引,然后再重建

I am planning to do the initial load in batches by using the create_dt_tm for the records and load the data in months. Once everything is loaded, we are planning to use the updt_dt_tm and load any updates done in last 10 minutes.

我不知道 updt_dt_tm 是什么,但这听起来是个好主意

Is connecting to the database a good idea to get the data every 10 minutes?

是的。否则您将如何获取数据?

总而言之,专注于让一个十分钟的 ODS 副本工作,基于增量负载。然后下一步是将数据从 ODS 转换为星型模式。

how we can extract the data from Oracle and load them in SQL Server DWH using SSIS Packages.

同样,这是一个非常宽泛的问题,我可以在这里为您提供完整的方法,但我认为我的付费客户不会喜欢它

许多设计模式。我更喜欢 ELT(Extract Load Transform)ODS 方法,它很重 T-SQL,但根据我的经验,这是最好的方法。在这种方法中,您加载和暂存最近几天更新的记录,然后使用 SQL 将它们合并到 ODS 表中

只有一件事情:我在你的历史问题中看到你问的是条件拆分。我只需要警告你,如果你开始在 SSIS 中使用条件拆分和查找来加载你的数据,你的包可能不会执行得很好,你最终会得到一些非常复杂的东西,它会用完你的十分钟。

这实际上归结为 ETL 与 ETL 方法。如果您对 SQL 不熟悉,那么您可能不得不使用 ELT(SSIS 包中的所有登录)方法。但根据我的经验,它变得缓慢且难以维护

关于sql-server - 在数据仓库中加载数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com