我很难在 Ruby on Rails 应用程序中管理大型数据集的存储和访问。简而言之,这是我的应用程序:我正在执行与道路网络有关的 Dijkstra 算法,然后使用 google maps API 显示它访问的节点。我正在使用美国道路网络的开放数据集通过迭代链接中给出的两个 txt 文件来构建图形,但是我无法在我的应用程序中存储这些数据。
我的印象是像这样的大型数据集不是 ActiveRecord 对象 - 我不需要修改这些数据的内容,而是能够访问它并将其缓存在本地哈希中以对其执行 ruby 方法。我已经尝试了一些事情,但我遇到了麻烦。
我认为解析 txt 文件并将图形以 yml 格式存储是最有意义的。然后,我可以将图形作为种子数据加载到数据库中,并使用 Node.all 或类似的东西来获取图形。不幸的是,yml 文件变得太大,rails 无法处理。运行 Rake 会导致系统以 100% 无限运行...
接下来我想,既然我不需要修改数据,我可以在每次应用程序加载时创建图表作为其“初始化”的开始。但是我不知道该把这段代码放在哪里,我需要运行一些方法,或者至少是一个数据块。然后将其存储在某种全局/会话变量中,我可以在所有控制器/方法中访问该变量。我不想传递这个大型数据集,只需从任何地方访问它。
这是我目前正在这样做的方式,但这是不可接受的。我正在解析在控制器操作上创建图形的文本文件,并希望它在服务器超时之前得到计算。
理想情况下,我会将图形存储在数据库中,我可以获取整个内容以在本地使用。或者至少只需要在应用程序加载时解析一次数据,然后我就可以从不同的页面视图等访问它。我觉得这将是最有效的,但我遇到了障碍片刻。
有任何想法吗?