提取物定期将数据从Sql Server转换为MongoDB

时间:2018-05-14 16:32:39

标签: sql-server mongodb replication etl

我有一个Sql Server数据库,用于存储来自许多不同来源(作家)的数据。

我需要为用户提供一些聚合数据,但是在Sql Server中,这些数据存储在几个不同的表中并且查询速度太慢(每个表中有5个表连接数百万行,一对多)。

我目前认为最好的方法是提取数据,转换数据并将其存储在一个单独的数据库中(让我们说MongoDB,因为它只用于读取)。

我不需要将数据生效,只需24小时就不会比这些数据更长。'数据库中。

但是,实现这一目标的最佳途径是什么?您能为它推荐任何工具(最好免费),还是编写自己的软件并安排定期运行?

1 个答案:

答案 0 :(得分:3)

我建议尊重NIH原则,阅读和转换数据是一个很好理解的练习。有几种免费的ETL工具可供选择,具有不同的方法和重点。 Pentaho(ex Kettle)和Talend是基于UI的示例。还有其他ETL框架,如Rhino ETL,它们只是为您提供一组工具来编写代码中的转换。您更喜欢哪一个取决于您的知识,并且不出所料,偏好。如果您不是开发人员,我建议您使用其中一个基于UI的工具。我在许多较小的数据仓库场景中使用了Pentaho ETL,可以使用操作系统工具(Linux上的cron,Windows上的任务调度程序)来安排它。更复杂的场景可以使用Pentaho PDI存储库服务器,该服务器允许集中存储和调度作业和转换。它具有多种数据库类型的连接器,包括MS SQL Server。我自己还没有使用过Talend,但是我已经听过很好的事情,它也应该在你的名单上。

坚持使用标准工具的主要优点是,一旦您的需求增长,您就已经拥有了处理它们的工具。您可以使用执行复杂选择的小脚本解决当前问题,并将结果插入目标数据库。但是经验表明这些需求很少长时间保持不变,一旦你必须在文本文件中加入其他数据库甚至某些信息,你的脚本就会变得越来越难以维护,直到你最终放弃并重做你在标准工具集中的工作专为工作而设计。