定期从Sql Server中提取和转换数据到MongoDB
问题:定期从Sql Server中提取和转换数据到MongoDB 我有一个 Sql Server 数据库,用于存储来自许多不同来源(作者)的数据。 我需要为用户提供一些聚合数据,但是在 Sql Server 中,这些数据存储在几个不同的表中,查询速度太慢(5 个表连接,每个表中有几百万行,一对多)。 我目前认为最好的方法是提取数据,对其进行转换并将其存储在一个单独的数据库中(假设是 MongoDB
问题:定期从Sql Server中提取和转换数据到MongoDB
我有一个 Sql Server 数据库,用于存储来自许多不同来源(作者)的数据。
我需要为用户提供一些聚合数据,但是在 Sql Server 中,这些数据存储在几个不同的表中,查询速度太慢(5 个表连接,每个表中有几百万行,一对多)。
我目前认为最好的方法是提取数据,对其进行转换并将其存储在一个单独的数据库中(假设是 MongoDB,因为它仅用于读取)。
我不需要实时数据,与“主”数据库相比,不需要超过 24 小时。
但是实现这一目标的最佳方法是什么?您能推荐任何工具(最好是免费的)还是编写自己的软件并安排它定期运行更好?
解答
我建议在这里尊重 NIH 的原则,读取和转换数据是一个很好理解的练习。有几种免费的 ETL 工具可用,它们具有不同的方法和重点。Pentaho(前 Kettle)和Talend是基于 UI 的示例。还有其他 ETL 框架,例如Rhino ETL,它们只是为您提供一组工具来编写代码转换。您更喜欢哪一个取决于您的知识,并且毫不奇怪,偏好。如果您不是开发人员,我建议您使用基于 UI 的工具之一。我在一些较小的数据仓库场景中使用过 Pentaho ETL,可以使用操作系统工具(linux 上的 cron,windows 上的任务调度程序)进行调度。更复杂的场景可以使用 Pentaho PDI 存储库服务器,它允许集中存储和调度您的作业和转换。它具有多种数据库类型的连接器,包括 MS SQL Server。我自己没有使用过 Talend,但我听说过它的好消息,它也应该在您的列表中。
坚持使用标准工具的主要优势在于,一旦您的需求增长,您就已经拥有处理它们的工具。您可以使用执行复杂选择并将结果插入目标数据库的小脚本来解决当前问题。但是经验表明,这些需求很少会长期保持不变,一旦您必须在文本文件中合并额外的数据库甚至某些信息,您的脚本就会变得越来越难以维护,直到您最终放弃并在标准工具集中重做您的工作专为这项工作而设计。
更多推荐
所有评论(0)