假设我有 3 台机器。
我的第一台机器上装有 SQL Server 2016 和 R Services。
我的第二台机器有 SQL Server 2016,但没有启用 R 服务。
我的第三台机器上安装了独立的 Microsoft R Server。
我知道,因为我的第一台机器有带 R 服务的 SQL Server,所以我可以将 R 脚本作为存储过程存储在 SQL Server 上,稍后调用它进行分析。
我的问题在于我的独立 Microsoft R Server 如何连接到 SQL Server(启用和不启用 R 服务)。
据我了解,它使用 ODBC 连接到 SQL Server 并使用 RevoscaleR 函数查询或分析 SQL 数据 - 在这两种情况下。
如果是这样的话,
- 使用 R Services 连接到 SQL Server 与不使用 R Services 的 SQL Server 相比,我的机器 3(独立 MRS)有什么好处或限制?
- 在任何一种情况下,我都可以从我的 R IDE 远程调用任何存储过程吗?
- 在这两种情况下,我都可以将计算上下文推送到 SQL Server 吗?
- 与没有 R Services 的 SQL Server 相比,带有 R Services 的 SQL Server 为独立的 Microsoft R Server 提供了什么特别之处。
- 数据库引擎以任何一种方式执行其他任务的能力有什么不同吗?
想象一下,我不愿意在我的 SQL Server 上启用 R 服务,因为它可能会占用内存并降低数据库引擎本身的性能。我想要做的就是获得一个独立的 Microsoft R Server 并将其连接到没有 R Services 的 SQL Server,并获得所有可伸缩性和性能。
这样做我错过了什么?
我希望能回答其中一些问题:
您可以使用 RODBC 库从 R 调用 SQL Server 存储过程,例如这对我有用:
结果:
ScaleR
库的一项功能,例如 functionRxInSqlServer
。有关更多详细信息,请参见此处。sp_execute_external_script
使用 RODBC 从 R 调用 R 存储过程,但这似乎有点毫无意义。专用的 SQL Server 框(即未启用 R 服务)不必共享其资源,我想这会回答您的最后一个问题;拥有任何一种专用框(仅 MRS 或仅 SQL Server)的目的是,两者都不必共享其资源。拥有启用了 R 服务的 SQL Server 的目的是让盒子可以执行双重角色,资源允许,加上保持分析接近数据。我希望这是有道理的。这是一篇关于使用带有 R Services 的 SQL Server 将机器学习模型持久化到表中的好文章。你会如何在独立的 R 中做到这一点?
也许其他人可以插话,因为老实说这似乎与您的其他问题非常相似。您可能猜想没有多少人在这样做,所以您是最适合做这件事的人之一;试试这些东西,报告回来:)