我需要運行一個處理大量數據的進程。太大以至於無法在RAM中合理使用。數據不需要在流程實例之間保存或在流程實例之間共享,所以我希望能夠使用某種基於磁盤的數據庫來存儲。Ruby on Heroku的瞬態文件系統鍵/值存儲?
我的第一個想法是SQLite,但Heroku明確不支持。我嘗試的第二件事是Ruby的PStore
,但事實證明對於這份工作來說太過荒謬了。我嘗試的下一件事是DBM,Heroku似乎並沒有說他們不支持。但是,當我嘗試在部署代碼後運行代碼時,出現「LoadError:無法加載此文件 - dbm」。
既然我做不需要的流程實例之間進行持續的數據,有沒有什麼辦法來解決Heroku的偏見對支持基於文件的關係或鍵/值數據存儲?
我的臨時解決方案是使用https://github.com/peterc/rsmaz將數據填充到RAM中,但這比使用不會在Heroku上運行的DBM的解決方案的WAAAAY慢,並且數據集增長比現在大得多,我仍然可能結束顛簸的記憶,這可能會讓它變得非常慢。 –
我最終嘗試了SDBM,但事實證明它太片質。我從來沒有找到一個可行的工具,但我爲這個問題寫了一個基於文件的自定義解決方案,比壓縮數據將其壓入RAM更好更快。 –