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