Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 摘录及;定期将数据从Sql Server转换到MongoDB_Sql Server_Mongodb_Replication_Etl - Fatal编程技术网

Sql server 摘录及;定期将数据从Sql Server转换到MongoDB

Sql server 摘录及;定期将数据从Sql Server转换到MongoDB,sql-server,mongodb,replication,etl,Sql Server,Mongodb,Replication,Etl,我有一个Sql Server数据库,用于存储来自许多不同来源(编写器)的数据 我需要向用户提供一些聚合数据,但是在Sql Server中,这些数据存储在几个不同的表中,查询速度太慢(5个表连接在一起,每个表中有数百万行,一对多) 我目前认为最好的方法是提取数据,转换数据并将其存储在单独的数据库中(比如MongoDB,因为它只用于读取) 我不需要数据是实时的,只是不需要比“主”数据库早24小时 但实现这一目标的最佳方式是什么?你能为它推荐一些工具吗(最好是免费的),还是最好编写自己的软件并安排它定

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

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

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

我不需要数据是实时的,只是不需要比“主”数据库早24小时


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

我建议遵守NIH的原则,阅读和转换数据是一个很好理解的练习。有几种免费的ETL工具可用,具有不同的方法和重点。(除水壶)和是基于用户界面的示例。还有其他类似的ETL框架,它们只是给了您一组工具来用代码编写转换。你更喜欢哪一个取决于你的知识和偏好,这并不奇怪。如果您不是开发人员,我建议您使用基于UI的工具之一。我在许多较小的数据仓库场景中使用了Pentaho ETL,可以使用操作系统工具(linux上的cron,windows上的task scheduler)对其进行调度。更复杂的场景可以使用Pentaho PDI存储库服务器,它允许集中存储和调度作业和转换。它具有用于多种数据库类型的连接器,包括MS SQL Server。我自己也没用过泰伦德,但我听说过它的优点,它也应该在你的清单上

坚持使用标准工具的主要优点是,一旦您的需求增长,您就已经有了处理这些需求的工具。您可以使用一个小脚本来解决当前的问题,该脚本执行复杂的select并将结果插入目标数据库。但经验表明,这些需求很少会长期保持不变,一旦你不得不在文本文件中加入额外的数据库,甚至可能是一些信息,你的脚本就变得越来越不可维护,直到你最终屈服,并在为这项工作设计的标准工具集中重做你的工作