我很難在Ruby on Rails應用程序中管理大型數據集的存儲和訪問。以下是我的應用程序:我正在執行Dijkstra的算法,因爲它涉及道路網絡,然後使用google maps API顯示它訪問的節點。我正在使用US road network的開放數據集通過迭代鏈接中給出的兩個txt文件來構建圖形,但是我在將這些數據存儲在我的應用程序中時遇到了問題。Ruby on Rails - 存儲和訪問大型數據集
我的印象是,像這樣的大數據集不是ActiveRecord對象 - 我不需要修改這些數據的內容,而是能夠訪問它並在本地緩存哈希以執行ruby方法在上面。我嘗試了一些東西,但我遇到了麻煩。
我認爲解析txt文件並以yml格式存儲圖表是最有意義的。然後,我可以將圖加載到數據庫中作爲種子數據,然後使用Node.all抓取圖,或者沿着這些線抓住圖。不幸的是,yml文件變得太大,無法處理。運行Rake會導致系統在無限遠處運行在100%...
接下來我想,既然我不需要修改數據,我可以在每次應用程序加載時都創建圖形作爲開始其「初始化」。但是我不知道該把代碼放在哪裏,我需要運行一些方法或者至少一塊數據。然後將它存儲在我可以在所有控制器/方法中訪問的某種全局/會話變量中。我不想傳遞這個龐大的數據集,只需從任何地方訪問它。
這是我目前正在做的方式,但它是不可接受的。我解析了在控制器動作中創建圖形的文本文件,並希望在服務器超時之前獲取計算。
理想情況下,我會將圖存儲在一個數據庫中,我可以抓取整個內容以便在本地使用。或者至少只需要在應用程序加載時解析數據一次,然後我就可以從不同的頁面查看等來訪問它。我覺得這將是最有效的,但我遇到了障礙時刻。
任何想法?