我正处于一个旨在最终创建数据仓库的小项目中。我目前正在从平面文件系统和两个SQL Server数据库移动数据。该项目在C#中启动,以自动处理来自平面文件系统的数据。除此之外,项目还执行存储过程以从其他数据库中获取数据。他们使用链接服务器访问其他数据库中的数据。
我想知道这是否不正确,即使它确实完成了工作,可能会有更好的方法吗?我想到的另一种方法是使用应用程序从每个数据库中提取数据然后将其推送到数据仓库,但我不确定性能。还有另外一种方法吗?我可以研究的任何道路都很受欢迎。
答案 0 :(得分:2)
'正确'是一个非常相对的术语。我见过一系列存储过程,SSIS(微软)和第三方工具。各自都有一些优势
存储过程 使用作业来安排一系列存储过程,这些存储过程将行从一个服务器插入到下一个服务器。我发现sql开发人员更有可能采用这种方式......它的设计灵活,而且优秀的SQL程序员可以在这里完成几乎任何事情。也就是说,支持/排除故障/维护/更改非常困难(特别是如果初始开发人员不再与公司合作)。这里的错误处理通常很差
SSIS和其他工具,如pentaho或数据阶段或...谷歌搜索它,还有一些。 这提供了一个更加图形化的设计界面,虽然我已经看到SSIS包只是简单地调用存储过程,以便也可能只是一个工作。这些工具就是你对它们所做的。它们提供了非常容易看到的工作流程,并且在错误处理和故障排除能力方面非常强大(相信我,每个ETL过程都会有一些糟糕的日子,你会非常高兴你必须识别任何日志记录你想要什么)。我发现使用这些工具可以更轻松地配置服务器资源(例如,多个处理器)。他们都有相当的学习曲线。
我发现SQL开发人员非常倾向于使用存储过程路由,而来自DBA背景的人通常更倾向于使用这些工具。如果您正在投入时间,SSIS或同等工具是从公司未来的角度出发的更好方法,但需要更多时间来实施。
答案 1 :(得分:1)
在选择使用内容时,您需要考虑以下因素:
我们谈论移动的数据量以及需要移动的速度有多快。使用链接服务器移动45,000条记录并使用它移动100,000,000条记录之间存在巨大差异。考虑一下随时间推移的数据集的预期增长。一旦你获得更多记录,一个过程可以在早期阶段很好地解决和死亡。一旦你知道如何使用它们就像SSIS这样的工具要快得多,这使得我们进入第2点。
您有多少开发时间以及开发人员和将随时间推移维护导入的人员知道哪些工具?例如,SSIS是一个复杂的工具,它可能需要很长时间才能使用它。
您需要做多少数据清理和转换?您需要什么样的错误捕获和异常处理,您需要什么样的日志记录?过程越复杂,您就越有可能咬紧牙关并学习ETL特定工具。
答案 2 :(得分:0)
即使有一些答案,我同意其中两个答案,我必须对更广泛的情况给出主观意见。
我正处于一个旨在最终创建数据仓库的小项目中。
问题名称完全适合您的问题描述。这对未来的读者可能非常有帮助。因此,您的项目应该创建数据仓库。但它很小,学习开发具有可扩展性的项目。总是!
从这个角度来看,搜索和研究数据仓库项目应该是什么样子。并制定每一步。
自定义软件与存储过程(链接数据库)与ETL
自定义软件(在这种情况下是您的C#项目)应该在两种情况下使用:
也许你会想到微小的直接项目。但不,因为这些项目可以增长并且非常快速地超出您的解决方案(新表,新来源,更改ERP或CRM等)。
如果您只使用SQL Server,如果您不需要数据清理,如果您不需要数据分析,如果您不需要外部数据,则存储过程就可以了。但是,很多“ifs”就在这里。再一次,你失去了可扩展性(你的管理方法是从他们实际使用的Google Spreadsheet中添加一些数据,例如KPI目标)。
ETL工具是数据仓库开发中的一个本机步骤。在开始时,可能有很少的表复制操作,或一些SQL,一个源,一个目标。就项目的增长而言,您可以添加新的转换。
SSIS可能是最好的,因为你正在使用SQL Server,但有一些好的免费工具。