【问题标题】:Storing images binaries inside a triple-store vs. storing only a url reference在三重存储中存储图像二进制文件与仅存储 url 引用
【发布时间】:2013-02-05 20:39:56
【问题描述】:

我有数百万个实体资源存储在三重存储中,其中 (sparql) 查询可能会返回数百个(或数千个)它们(结果将通过例如透视查看器进一步缩小,其中实体的缩略图图像应该显示)。

现在,关于此主题的大多数答案都建议将图像存储在三重存储之外,并在三重存储内部(例如 foaf:Image)有一个指向资源图像的 uri 引用。

如果我将它们存储在三重存储中,我想我会通过对后端存储的一个 sparql 查询(获取实体及其缩略图)获得更好的性能。

另一方面,由于图像存储在三重存储之外,我必须执行许多查询才能获取图像。

处理这种情况的最佳做法是什么? (可能适用于实体资源的其他二进制数据属性)。

【问题讨论】:

    标签: image triplestore


    【解决方案1】:

    在这种情况下,最好的办法是单独存储图像。大多数三元存储没有优化的 Blob 存储,您可能会因为在数据库中包含二进制数据而降低所有查询的性能。

    您仍然可以在单个查询中获取某个请求的所有图像 - 可能取决于我猜的请求,但它可能的。我的建议是,您对图像的 URL 引用由 Apache 之类的东西提供。这样,您可以直接向客户提供 URL,他们可以以任何最好的方式获取它们;把这想象成一个浏览器获取一个使用图像的网页,图像不是 HTML 的一部分,它是单独获取它们的。

    如果需要,您可以处理图像的上传,方法是拆分请求并将图像元数据放在三元存储中,同时将图像的实际位放在 Apache 托管目录中。

    这还允许您设置缓存和其他标准 HTTP 级别的基础架构,以便尽可能快速、轻松地提供图像,我认为这最终会为您提供最佳性能水平。

    【讨论】:

    • 感谢您的回答。当我们谈论几千张图片时,这仍然成立吗?
    • 是的,为什么不呢? Apache 是一个非常好的 Web 服务器,可以处理数千张图像。市场上的任何三元组存储都可以处理存储图像 URL 的几千个三元组。
    猜你喜欢
    • 2016-05-13
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多