我们正在为每次迭代使用一组SPARQL查询构建迭代算法。这个算法效果很好,但我们遇到了CPU利用率问题。像Fuseki这样的SPARQL引擎并不是真正的多线程;它们允许在多个线程中执行多个同时查询,但每个单独的查询都是单线程的。通过查看一些Fuseki笔记,我得到的印象是Fuseki不是线程安全的,所以这不是一个小问题。
由于我们的算法在SPARQL查询方面本质上是串行的,并且我们一次只对一次运行感兴趣,是否有一些SPARQL引擎可以利用32个内核?
答案 0 :(得分:1)
是的,BigData是一个开源/商业的例子。
我自己的项目dotNetRDF也大量使用多线程,在我的情况下,我将.Net PLINQ功能用于并行连接,产品,FILTER
和BIND
操作,尽管它们不是'总是能够接受这个。
在Fuseki的注释中(免责声明我也参与了Apache Jena项目),因为AndyS指出Fuseki本身是线程安全的。问题是查询引擎(ARQ)不是为了并行操作而设计的,过去已经讨论了一些关于这个问题的想法,但IMO会涉及相当重要的重写。
答案 1 :(得分:1)
由YarcData开发和销售的Urika引擎是高度多线程的(多达几千个并发线程)并且运行在非常大的内存中。可能不适合业余爱好者的预算。 :)