代码之家  ›  专栏  ›  技术社区  ›  abondoa

加快芝麻加载rdf文件

  •  4
  • abondoa  · 技术社区  · 11 年前

    有没有办法加快rdf文件加载到Sesame中的速度?我的文件大小从几MB到几GB不等,采用N三重格式。我已经尝试了 Sesame Cook Book ,但无济于事。我在17小时内加载了一个约700MB的文件,每50000行拆分一次输入文件( cook book ). Sesame在Windows 7的商品机器上运行。

    另外一部分:我想对数据进行推断,但将推断的数据存储在单独的芝麻存储库中(或者存储在同一存储库中的另一个上下文/图形中)。本质上,我希望将数据存储在两个版本中,一个是“常规”rdf,另一个是针对特定查询进行优化的,因此需要单独存储它们。我一直在看 CustomGraphQueryInferencer ,但还没有弄清楚我是否可以使用它单独存储数据。此外 自定义图形查询推断器 似乎大大降低了加载时间,因此非常不吸引人。有其他解决方案吗?

    1 回复  |  直到 11 年前
        1
  •  5
  •   Michael    11 年前

    在17小时内插入500k个三元组 荒谬地 令人不快的大约是每秒8次三次。据我所知,Sesame没有批量插入模式,但你不可能看到负载率 那个 缓慢的

    您可以确保没有启用autoCommit;这将对每个三元组进行提交,这将有助于解释为什么加载率如此之低。

    关于推理,负载率低的另一个因素是您使用的是执行物化的推理器。也就是说,每次写入数据库时,都会重新计算推断语句并将其保存回数据库。此外,您选择使用的推理器是基于查询的,因此您向数据库中的加载会受到查询应答、真相维护和具体化的阻碍。

    这可能是低负载率的很大一部分,尽管对于这一点来说,它似乎仍然太慢了。但也许再加上启用了autoCommit,这或许可以解释这一点。

    你可能可以在加载所有数据后添加推理器,我不太了解特定的推理器是如何工作的,所以不知道这是否正确,但从理论上来说,这肯定是可能的。芝麻邮件列表可能有更多关于它如何工作的详细信息。

    您还可以考虑在查询时而不是加载时执行推理的解决方案;这不会产生昂贵的写入开销,并且允许您在最适合您的应用程序的任何时候使用或不使用推理。这将有效地让您拥有数据的两个“版本”,一个应用了推理,另一个不应用,而实际上不必有两个版本或将推理具体化。