2014-05-17 125 views
0

我正在構建一個應用程序,用於從網站下載一組圖像,從中提取一些功能,然後允許用戶將她提交的圖像與下載的設置進行比較,以查看哪一個最接近。目前,應用程序下載圖像並從中提取特徵。然後,圖像和特徵被包裝在一個對象中並存儲在一張地圖中,其中鍵爲圖像的名稱,並且該值作爲前述包裝對象。 因爲它存儲在內存中,所以每次啓動應用程序時都必須經歷相當昂貴的下載和特徵提取過程。這將是更快,如果它可能只是從磁盤加載此信息,但我不知道的最好的方式去了解它 - 我已經想過這些選項:哪種持久性方法?

  • 關係數據庫管理系統:類似的Postgres或SQLite的
  • 的NoSQL:像 伏地魔或Reddis
  • 序列化:使用內置的Java方法來寫 對象到一個文件(也可以在配合使用DB 雖然...)

我希望它成爲r最重量輕;我想保持應用程序儘可能小,並將配置保持在最低限度。出於這個原因,序列化似乎是要走的路,但是我想對此有第二個(或更多)意見,因爲以這種方式做這件事情只是感覺不對。我不能把我的手指放在爲什麼我覺得這樣... 我也應該說,用戶可以在應用程序運行時將圖像添加到該集合,我也想保存這些圖像。

+0

如果你有一個對象,並希望以後的序列化似乎是一個自然的選擇。順便說一句,如果你發現java的內置序列化太慢看克里奧seriisedation,發現相當快 –

回答

0

我不會推薦serialzation - 太多的陷阱。

如果你所擁有的只是一張地圖,那麼我認爲任何關鍵值存儲(如redis)都是合適的。

如果你有更復雜的數據,那麼你可能要考慮一個數據庫(無論是SQL還是無SQL)。