考虑到拥有大型活跃用户群的情况,每个用户都希望存储个人资料图片和一些其他图像或其他工件,是否有任何库或框架可以轻松存储和查询此类数据?
参考实施将是Facebook的Haystack Photo Infrastructure。
以下特征很重要
欢迎任何可轻松集成到Java Web应用程序中的库或框架建议。
更新:谢谢你的前几个答案。我必须详细说明预期的答案类型。 Tobu's answer,虽然不是java相关的非常好(刚刚投了票)。可以实现一个结合了文件系统访问和数据库的解决方案,并在它们之间添加一些缓存层,但我认为这是浪费时间,如果比我更有资格的人已经设计,实现并运行更好解。基于具有底层DB或JCR实现的解决方案的东西是合适的,但实现其他基础结构并不是我想要做的。
答案 0 :(得分:2)
MogileFS是LiveJournal使用的。不过特别是Java。
答案 1 :(得分:1)
我们使用Fedora Commons(http://www.fedora-commons.org/)的媒体存储库获得了很好的体验,它允许您将媒体资产与其关联的元数据一起存储。我们在可扩展性或定制方面没有任何问题,也没有用三重存储交换底层存储层(如果在您的情况下需要这样做)。如果需要使用Solr索引数据,可以使用预定义的元数据字段(“RELS-EXT”)来存储基于XML的数据。
答案 2 :(得分:0)
我觉得您的要求与数据库提供的要求非常接近。只需确保表格设计符合您的需求(例如,您可以在元数据的单独表格中获得图像等大数据)。
将涵盖您的所有要求,包括数据库中的缓存层(您可以根据需要在应用程序中添加一个额外的缓存层,这可能也会用于您的应用程序的其余部分。)
答案 3 :(得分:0)
Apache Jackrabbit是Java Technology API的内容存储库(JCR,JSR 170和283中指定)的完全一致的实现。 但它有一些性能问题(至少在我使用的2年版本中),克服它们的最佳方法是将静态图像复制到网络服务器。 (使用WebDAV,davfs和rsync)
答案 4 :(得分:0)
这取决于“大型活跃用户群”的量化......
80%的网站可以简单地使用NoSQL架构方法,例如y_serial:
y_serial.py module ::使用SQLite的仓库Python对象
“序列化+持久性::在几行代码中,将Python对象压缩并注释为SQLite;然后通过关键字按时间顺序检索它们,而不使用任何SQL。最有用的”标准“模块,用于存储无模式数据的数据库。“
http://yserial.sourceforge.net
如果每个用户的照片和工件压缩不到2M,那么性能应该不错。
对于剩余的20%的案例使用情况,可以轻松地将数据从yserial导入Cassandra--现在已被Facebook,Digg和Twitter采用。