有没有办法加快rdf文件加载到芝麻?我的文件大小从几MB到几GB的N-triple格式.我在芝麻库书中尝试过三种方法,但无济于事.我通过在每500,000行(在烹饪书中接近2 )分割输入文件,在17小时内加载了~700MB的文件.芝麻在Windows 7的商用机器上运行.
奖励部分:我想对数据进行推理,但是将推断的数据存储在单独的芝麻存储库中(或者在同一存储库中的另一个上下文/图形中).基本上我想将数据存储在两个版本中,一个是"常规"rdf,另一个是针对某些查询进行优化的 - 因此需要单独存储它们.我一直在查看CustomGraphQueryInferencer,但还没弄清楚我是否可以使用它来分别存储数据.此外,CustomGraphQueryInferencer似乎大大减慢了加载时间,因此非常缺乏吸引力.任何替代方案?
在17个小时内插入500k三倍是荒谬的糟糕; 这大概是8个三分之一秒.据我所知,芝麻没有批量插入模式,但你不应该看到那么慢的加载速率.
您可以确保没有autoCommit; 对每个三元组做出承诺,这可能会很长一段时间来解释为什么你的负载率非常低.
关于推理,负载率较低的另一个因素是您正在使用执行实现的推理器.也就是说,每次写入数据库时,都会(重新)计算推断语句并将其保存回数据库.此外,您选择使用的推理器基于查询,因此您在数据库中的加载受到查询应答,真值维护和实现的阻碍.
这可能是负载率很低的很大一部分,尽管如此,它似乎仍然太慢了.但也许结合启用autoCommit,这可能解释它.
您可能能够在加载所有数据后添加推理器,我不知道该特定推理器如何工作以了解这是否正确,但从理论上讲,它肯定是可能的.Sesame邮件列表可能包含有关其工作原理的更多详细信息.
您还可以考虑在查询时执行推理而不是加载时间的解决方案; 这不会产生昂贵的写入开销,并且允许您在最适合您的应用程序时使用或不使用推理.这有效地让你有两个'版本'的数据,一个有推理应用,一个没有,没有实际上必须有两个版本或实现推论.