我正在尝试执行一个大型 SPARQL 更新请求,基本上使用一个INSERT DATA
命令和一组DELETE ... WHERE
命令。该请求执行一些三元组的插入并删除受INSERT
命令影响的个人功能属性的旧值,以保持数据一致;平均每个请求 300-400 次操作。为了执行请求,我使用 Apache JenaUpdateProcessor
和 Blazegraph ( http://localhost:9999/blazegraph/namespace/kb/update
) 的 SPARQL 更新端点:
UpdateProcessor processor = UpdateExecutionFactory.createRemote(request, updateUrl, client);
processor.execute()
这种请求的执行时间在我的笔记本电脑上平均约为 5-7 秒,但我也注意到 Blazegraph 本身的 CPU 和磁盘利用率很低,尽管响应时间很长。我想,如果有瓶颈,应该会达到上限(100% 的 CPU 或高 dist I/O)。但是它们仍然很低......批量负载在这里不适用,因为我不仅需要添加新的三元组,还需要根据这些新的三元组修改数据集。
如何改进?也许我错过了 Blazegraph 配置中的某些内容......
这是我的RWStore.properties
:
com.bigdata.rdf.sail.truthMaintenance=false
com.bigdata.rdf.store.AbstractTripleStore.quads=true
com.bigdata.rdf.store.AbstractTripleStore.statementIdentifiers=false
com.bigdata.rdf.store.AbstractTripleStore.textIndex=true
com.bigdata.rdf.store.AbstractTripleStore.axiomsClass=com.bigdata.rdf.axioms.NoAxioms
com.bigdata.rdf.sail.isolatableIndices=false
com.bigdata.rdf.sail.bufferCapacity=100000
com.bigdata.journal.AbstractJournal.file=./journal/blazegraph.jnl
com.bigdata.journal.AbstractJournal.bufferMode=DiskRW
com.bigdata.btree.writeRetentionQueue.capacity=4000
com.bigdata.btree.BTree.branchingFactor=512
com.bigdata.rdf.store.DataLoader.commit=Incremental
Blazegraph 版本 2.1.1。启动选项:
java -server -Xmx8g -XX:+UseG1GC -Dbigdata.propertyFile=RWStore.properties -jar blazegraph.jar
爪哇版:
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)