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