使用 Python and/or SSIS 的数据集成结构

Data Integration Structure using Python and/or SSIS

我对如何将数据集成到 MSSQL 数据库的一般策略有疑问。

目前,我在整个 ETL 过程中使用 python。我用它来清理、转换和集成 MSSQL 数据库中的数据。我的数据很小,所以我认为这个过程现在可以正常工作。

但是,我觉得我的代码不断地读取数据和写入数据到数据库有点别扭。我认为一旦我处理大量数据并且常量 read/write 似乎效率很低,这种策略就会成为一个问题。但是,我不知道这是否是一个真正的问题。

我想知道这是否可行,或者我是否应该完全切换到 SSIS 来处理它。 SSIS 对我来说很笨重,我不想重写我的整个代码。对一般 ETL 架构的任何输入都会非常有帮助。

Is this practice alright? 也许? 因素太多,无法给出明确的答案。从概念上讲,您正在做的事情——从源中提取数据、对其进行转换、将其加载到目标、ETL,这就是 SSIS 所做的一切。它可能比 python 更有效地做事 - 至少我有一段时间让批量加载来处理内存映射数据。转储到磁盘并通过 python 批量插入 - 没问题。但是,如果现有的流程可行,那就让它继续下去,直到它不起作用。

如果您的团队知道 Python,引入 SSIS 只是为了执行 ETL 可能比扩大现有方法的维护成本更高。另一方面,如果它是标准的 Python + 库并且你在 SQL Server 2017+, you might be able to execute your scripts from within the database itself via sp_execute_external_script

如果 ETL 过程与数据库运行在同一个盒子上,那么请确保您有足够的资源来支持两个过程的最大观察水平 activity。如果 ETL 在别处运行,那么您需要确保数据库服务器和处理设备之间具有快速、全双工的连接。

建立一个与生产资源并行的负载测试环境。虚拟增加 10 倍的源数据并观察 ETL 的运行情况。 100 倍、1000 倍。在某个时候,您将确定您犯下的哪些开发错误无法扩展,然后 然后 您准备好提出一个非常好的、详细的问题来描述当前的体系结构、特定的代码在负载下表现不佳以及如何重现此负载。

以上设计注意事项适用于 Python、SSIS 或任何其他 ETL 解决方案 - 预打包或定制。