加快rdf文件的芝麻加载

abo*_*doa 4 rdf sesame

有没有办法加快rdf文件加载到芝麻?我的文件大小从几MB到几GB的N-triple格式.我在芝麻库书中尝试过三种方法,但无济于事.我通过在每500,000行(在烹饪书中接近2 )分割输入文件,在17小时内加载了~700MB的文件.芝麻在Windows 7的商用机器上运行.

奖励部分:我想对数据进行推理,但是将推断的数据存储在单独的芝麻存储库中(或者在同一存储库中的另一个上下文/图形中).基本上我想将数据存储在两个版本中,一个是"常规"rdf,另一个是针对某些查询进行优化的 - 因此需要单独存储它们.我一直在查看CustomGraphQueryInferencer,但还没弄清楚我是否可以使用它来分别存储数据.此外,CustomGraphQueryInferencer似乎大大减慢了加载时间,因此非常缺乏吸引力.任何替代方案?

Mic*_*ael 5

在17个小时内插入500k三倍是荒谬的糟糕; 这大概是8个三分之一秒.据我所知,芝麻没有批量插入模式,但你不应该看到那么慢的加载速率.

您可以确保没有autoCommit; 对每个三元组做出承诺,这可能会很长一段时间来解释为什么你的负载率非常低.

关于推理,负载率较低的另一个因素是您正在使用执行实现的推理器.也就是说,每次写入数据库时​​,都会(重新)计算推断语句并将其保存回数据库.此外,您选择使用的推理器基于查询,因此您在数据库中的加载受到查询应答,真值维护和实现的阻碍.

这可能是负载率很低的很大一部分,尽管如此,它似乎仍然太慢了.但也许结合启用autoCommit,这可能解释它.

您可能能够在加载所有数据后添加推理器,我不知道该特定推理器如何工作以了解这是否正确,但从理论上讲,它肯定是可能的.Sesame邮件列表可能包含有关其工作原理的更多详细信息.

您还可以考虑在查询时执行推理而不是加载时间的解决方案; 这不会产生昂贵的写入开销,并且允许您在最适合您的应用程序时使用或不使用推理.这有效地让你有两个'版本'的数据,一个有推理应用,一个没有,没有实际上必须有两个版本或实现推论.

  • 我可以添加一个更正:17个小时用于整个数据集,即10个大约70MB的文件,每个包含500,000个三元组(除了最后一个稍微少一些)到总计4.8百万,这意味着平均值.加载时间是78三倍/秒,这仍然很慢. (2认同)
  • 如果您没有定期提交,除了推理和加载工作之外,您肯定会遇到GC问题.你可能比测量芝麻更能测量你的代码.没有芝麻帆确实查询我所知道的时间推理; 如果您想要查询时间推理,则需要与芝麻兼容的第三方解决方案. (2认同)