2014-05-17 88 views
0

我正在构建一个应用程序,用于从网站下载一组图像,从中提取一些功能,然后允许用户将她提交的图像与下载的设置进行比较,以查看哪一个最接近。目前,应用程序下载图像并从中提取特征。然后,图像和特征被包装在一个对象中并存储在一张地图中,其中键为图像的名称,并且该值作为前述包装对象。 因为它存储在内存中,所以每次启动应用程序时都必须经历相当昂贵的下载和特征提取过程。这将是更快,如果它可能只是从磁盘加载此信息,但我不知道的最好的方式去了解它 - 我已经想过这些选项:哪种持久性方法?

  • 关系数据库管理系统:类似的Postgres或SQLite的
  • 的NoSQL:像 伏地魔或Reddis
  • 序列化:使用内置的Java方法来写 对象到一个文件(也可以在配合使用DB 虽然...)

我希望它成为r最重量轻;我想保持应用程序尽可能小,并将配置保持在最低限度。出于这个原因,序列化似乎是要走的路,但是我想对此有第二个(或更多)意见,因为以这种方式做这件事情只是感觉不对。我不能把我的手指放在为什么我觉得这样... 我也应该说,用户可以在应用程序运行时将图像添加到该集合,我也想保存这些图像。

+0

如果你有一个对象,并希望以后的序列化似乎是一个自然的选择。顺便说一句,如果你发现java的内置序列化太慢看克里奥seriisedation,发现相当快 –

回答

0

我不会推荐serialzation - 太多的陷阱。

如果你所拥有的只是一张地图,那么我认为任何关键值存储(如redis)都是合适的。

如果你有更复杂的数据,那么你可能要考虑一个数据库(无论是SQL还是无SQL)。