我已经构建了一个SOLR索引,其中包含我想要将图像与搜索结果一起呈现的图像缩略图网址。问题是这些图像可能会达到数百万,我认为将图像作为二进制数据存储在索引中会使索引变得庞大。
我正在寻求如何在从URL渲染后有效存储这些图像的指导,我应该使用普通文件系统并使用tomcat渲染它们,还是应该使用像Apache Jackrabbit这样的JCR存储库?
非常感谢任何指导。
谢谢。
答案 0 :(得分:1)
在最终决定如何保留图像之前,我会评估有效的要求。
您需要版本控制吗? 您是否计划只是激动图像或其他元数据? 你对水平缩放有什么要求吗? 您需要任何图像处理或缩放吗? 你需要访问图像metatdata吗? 您是否需要额外的工具来管理图像? 您是否愿意花时间学习其他技术?
存储文件系统并通过图像sppoler实现使它们可用是保存图像的最简单方法。 但是如果你确定了上面提到的一些要求(这是内容仓库或大坝系统的典型要求),那么最终会用文件系统方法重新发明轮子。
另一种选择是使用一种内容存储库。像Jackrabbit这样的JCR仓库或它的商业实现CRX是一种选择。 Alfresco(支持CMIS)将是另一个有效的。 两个提到的存储库解决方案都支持版本控制,后处理(缩放...),元数据提取和管理等功能。但这需要您学习一项耗时的新技术。两种提到的存储库技术都会变得复杂 如果需要水平扩展,我会考虑商业支持的存储库实现(CRX或Alfresco Enterprise),因为通用版本缺少此功能。
就我个人而言,我真的会依赖于上述要求的任何决定。 我与Jackrabbit,CRX和Alfresco CE以及EE进行了广泛的合作,我个人会亲身体验Alfresco,因为我经历过更大规模的数据扩展。
答案 1 :(得分:0)
我不知道一个完全符合您需求的图像池解决方案,但除了重复扩展操作可能非常耗费资源这一事实之外,它不应该难以实现。
如果FS足够你,我会选择以下方法:
如果您计划存储数百万张图像,请避免将所有文件放在同一目录中。浏览包含两个条目的平面层次结构将是一场噩梦。 最好通过反转当前日期时间(年/月/日/小时/分钟...... 2013/06/01/08/45)来创建树结构。
这可以确保最后一个文件夹中的文件数量不会太大(Alfresco使用相同的模式在FS上存储二进制对象,并且它可以很好地工作)。