4

我正在学习我想要/正在尝试制作的与篮球相关的数据即网络应用程序的全栈开发。鉴于我拥有的技术技能,我有一个与解决我的数据问题的最佳方法有关的问题。

几个月前,我使用 R 创建了以下 R Shiny App。这个应用程序的堆栈/非常不完整的后端是:

  • 我使用 R Shiny 启动应用程序,托管在带有 Shiny Server 的 EC2 实例上
  • 在 R 中,我有一个名为 scraper.R 的脚本,它每天(每天一次)从MySportsFeed(一个很棒的体育 API)查询数据,并将新的每日数据更新为我拥有的 8 个 CSV 文件中的 1 个。(我的 Shiny 应用程序中的每个图表都有不同的 CSV 文件)
  • 然后,我的 R Shiny 应用程序将 CSV 读入 app.R 文件,该文件包含整个应用程序的所有代码。

为了扩展这个应用程序并让它变得更好,我一直在学习全栈 JavaScript 开发,并且我即将开始将这个 Shiny 应用程序编码为一个 React 应用程序。

我当前的挑战/考虑是我应该如何管理我的 React 应用程序中的数据。尤其是:

  1. 我的 scraper.R 文件使用dplyr和其他 R 库进行了大量的数据操作。从 MySportsFeed 的 API 提供的表单中获取数据,到我的 Shiny App 所需的表单,对于我所有的图形和图表,都是相当多的。

  2. 话虽如此,我想继续使用 R 来调用 MySportsFeed API 并格式化数据。我当然想取消 CSV 文件,但这并不容易。8 个 CSV 文件中的每一个都包含数百次调用 MySportsFeed API 的结果。(对 MySportsFeed 的每个 API 调用可能会给我 1 场 NBA 比赛数据,而 CSV 文件已经更新了 1000 场 NBA 比赛数据)。

  3. 我相信我想替换 (a) 从 CSV 文件读取数据到 R Shiny 应用程序中 (b) 使用托管的数据源调用我自己的 API 端点(我可以在 R 或 Javascript 中创建 API 端点,R 的管道工很适合这个)

  4. 我相信我想将 (a) 将数据存储在 CSV 文件中替换为 (b) 将数据存储在 mongo 数据库中,该数据库可以轻松插入 React 应用程序。

那么我的问题是:是否有一种直观的方法可以将以下内容连接在一起:

  • 我的 R 代码(它调用 MySportsFeed API,获取新数据,并将该数据处理成图表格式)
  • 一个 API(无论是 R 管道工 API 还是包含我所有数据的 javascript API)
  • mongo 数据库(保存我所有历史上报废的数据)。

提前致谢。

编辑 - 几个月前,我在一个RShiny应用程序上发了一个帖子,我想把它变成一个 React 应用程序。

4

1 回答 1

3

我认为你应该研究一下OpenCPU——它为你完成了大部分工作(HTTP API 到你的 R 代码),而且它的可扩展性只是闪亮服务器专业版的一小部分成本。不过,它需要将您的代码转换为 R 包。

可以通过mongolite库连接到 MongoDB,但除非您出于某种原因需要非结构化数据存储(不确定您抓取的提要是否稳定),否则当数据库性能下降时 SQL 数据库可能更容易处理(我发现调试性能问题在MongoDB 更难)。

我无法评论 React,因为我对 JS 几乎一无所知,但显然人们已经将 OpenCPU 与 ReactJS 结合起来:https ://github.com/sdeboudt/reactr

于 2018-03-18T15:19:39.313 回答