正在访问 ETL 数据以供日常负载 SQL 服务器
Accessing data for ETL for daily load SQL Server
我需要你的专业知识,在 DWH/ETL 中使用数据或直接从源代码使用它并执行 ETL 之前,找出将数据存储在数据库中的最佳选择。
目前的情况是我们在 PostgreSQL 数据库上有事务系统 运行ning。我们可以通过我们拥有数据仓库的 SQL 服务器中的链接服务器访问该数据库。
我们希望将数据从这个 LinkedServer 上传到数据仓库的过程自动化。在我们面临以下选项/挑战时,我们希望您的想法对我们有所帮助!
我们希望每天晚上都有我们的 ETL 运行!
- 我们是否首先将链接服务器中的数据存储到 SQL 表中,然后再在这些 table 上编写具有多个连接的多个查询以准备要上传到数据仓库中的数据?
- 如果我们将数据从 LinkedServer 存储到 SQL 服务器中的 tables,我更喜欢执行 t运行cate 和加载,而不是从 OLTP 到 [=] 中的表的增量加载31=] 服务器(1 到 1)用于所有这些 tables,因为我们无法从跨国系统获得不同的负载,人们可以返回并更改交易系统中的数据并识别新的和更新的记录这一点可能很棘手。
或
我们只是通过 LinkedServer 直接使用源系统来编写多个连接并即时准备数据并加载到某种预暂存中 table? (使用这个选项,我们目前面临的问题是,当我们直接在 LinkedServer 上编写多个连接时,我们只会得到 1 行,而不管总数 results/rows,但是如果我们存储所有正在使用的 table这些查询加入了单独的临时 table 和 运行 查询,我们得到了预期的结果)-请告诉我们是否有人以前遇到过这个问题,解决方案是什么?
构建数据仓库的传统模式是遵循您的第一个选择。
- 从源系统中提取数据的副本。
- 在临时表中本地处理数据。
- 将优化后的数据存入您的仓库层以供使用。
坚持这种模式有几个原因。例如,当您在提取的同时进行操作时,您通常会给源系统增加负载,这是您在开始构建数据仓库时试图摆脱的事情之一。此外,实际上我遇到的每个 ETL 工具都处理 ETL 服务器内存中的数据操作,这几乎总是比 SQL 服务器计算机上使用查询或存储过程处理操作效率低。有时速度极慢。当然还有更多原因,但当我过去偏离标准做法时,这些就是让我痛苦的原因。
如果我是你,我会测试通过查询链接的服务器表构建副本表与使用 SSIS 直接将它们从一个服务器拉到另一个服务器的性能。对于这样的平面数据移动,SSIS 可能非常高效,而对于批量数据移动,链接服务器可能效率较低。
也就是说,您不需要仅仅因为您的源系统没有任何可用的变更数据跟踪就放弃增量加载。
您可以每天刷新和填充您的副本表,但是当您这样做时,您就有机会引入您自己的更改跟踪。 that 最常见的模式是在导入时引入行散列以及跟踪您已经加载的记录的表。详细了解这个问题的范围之外的所有内容,但是在这两个问题中有更多关于它的信息。无论如何,足以为您自己的谷歌搜索提供动力。
我需要你的专业知识,在 DWH/ETL 中使用数据或直接从源代码使用它并执行 ETL 之前,找出将数据存储在数据库中的最佳选择。
目前的情况是我们在 PostgreSQL 数据库上有事务系统 运行ning。我们可以通过我们拥有数据仓库的 SQL 服务器中的链接服务器访问该数据库。
我们希望将数据从这个 LinkedServer 上传到数据仓库的过程自动化。在我们面临以下选项/挑战时,我们希望您的想法对我们有所帮助!
我们希望每天晚上都有我们的 ETL 运行!
- 我们是否首先将链接服务器中的数据存储到 SQL 表中,然后再在这些 table 上编写具有多个连接的多个查询以准备要上传到数据仓库中的数据?
- 如果我们将数据从 LinkedServer 存储到 SQL 服务器中的 tables,我更喜欢执行 t运行cate 和加载,而不是从 OLTP 到 [=] 中的表的增量加载31=] 服务器(1 到 1)用于所有这些 tables,因为我们无法从跨国系统获得不同的负载,人们可以返回并更改交易系统中的数据并识别新的和更新的记录这一点可能很棘手。
或
我们只是通过 LinkedServer 直接使用源系统来编写多个连接并即时准备数据并加载到某种预暂存中 table? (使用这个选项,我们目前面临的问题是,当我们直接在 LinkedServer 上编写多个连接时,我们只会得到 1 行,而不管总数 results/rows,但是如果我们存储所有正在使用的 table这些查询加入了单独的临时 table 和 运行 查询,我们得到了预期的结果)-请告诉我们是否有人以前遇到过这个问题,解决方案是什么?
构建数据仓库的传统模式是遵循您的第一个选择。
- 从源系统中提取数据的副本。
- 在临时表中本地处理数据。
- 将优化后的数据存入您的仓库层以供使用。
坚持这种模式有几个原因。例如,当您在提取的同时进行操作时,您通常会给源系统增加负载,这是您在开始构建数据仓库时试图摆脱的事情之一。此外,实际上我遇到的每个 ETL 工具都处理 ETL 服务器内存中的数据操作,这几乎总是比 SQL 服务器计算机上使用查询或存储过程处理操作效率低。有时速度极慢。当然还有更多原因,但当我过去偏离标准做法时,这些就是让我痛苦的原因。
如果我是你,我会测试通过查询链接的服务器表构建副本表与使用 SSIS 直接将它们从一个服务器拉到另一个服务器的性能。对于这样的平面数据移动,SSIS 可能非常高效,而对于批量数据移动,链接服务器可能效率较低。
也就是说,您不需要仅仅因为您的源系统没有任何可用的变更数据跟踪就放弃增量加载。
您可以每天刷新和填充您的副本表,但是当您这样做时,您就有机会引入您自己的更改跟踪。 that 最常见的模式是在导入时引入行散列以及跟踪您已经加载的记录的表。详细了解这个问题的范围之外的所有内容,但是在这两个问题中有更多关于它的信息。无论如何,足以为您自己的谷歌搜索提供动力。