定期从 Sql Server 提取和转换数据到 MongoDB

3
我有一个用于存储来自许多不同来源(作者)数据的Sql Server数据库。
我需要向用户提供一些聚合数据,但在Sql Server中,这些数据存储在几个不同的表中,并且查询速度太慢(5个表连接,每个表中有数百万行,一对多)。
我目前认为最好的方法是提取数据,转换它并将其存储在单独的数据库中(比如MongoDB,因为它仅用于读取)。
我不需要数据是实时的,只需与“主”数据库相比不超过24小时即可。
但是,如何才能实现这一点呢?你能推荐任何工具吗(最好是免费的),还是编写自己的软件并安排定期运行更好?
1个回答

4
我建议在这里尊重NIH原则,阅读和转换数据是一项众所周知的练习。有几个免费的ETL工具可用,具有不同的方法和重点。 Pentaho(前身为Kettle)和Talend是基于UI的示例。还有其他ETL框架,例如Rhino ETL,仅向您提供一组编写转换的工具。您喜欢哪种取决于您的知识和偏好。如果您不是开发人员,则建议使用其中一个基于UI的工具。我曾在许多较小的数据仓库场景中使用过Pentaho ETL,可以使用操作系统工具(Linux上的cron,Windows上的任务计划程序)进行调度。更复杂的情况可以利用Pentaho PDI存储库服务器,该服务器允许集中存储和调度作业和转换。它具有连接器,可连接多种数据库类型,包括MS SQL Server。我自己没有使用Talend,但我听说过它很好,并且也应该列入您的清单。
坚持使用标准工具的主要优势在于,一旦您的需求增长,您已经掌握了处理它们所需的工具。您可能能够使用执行复杂选择并将结果插入目标数据库的小脚本解决当前问题。但是经验表明,这些需求很少保持不变,一旦您需要合并其他数据库或甚至一些文本文件中的信息,您的脚本变得越来越难以维护,直到最终放弃并重新使用专门设计的标准工具集完成工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接