我正在尝试执行大型SPARQL更新请求,基本上使用一个INSERT DATA
命令和一组DELETE ... WHERE
命令。请求执行一些三元组的插入并删除受INSERT
命令影响的个人功能属性的旧值,以保持数据一致;平均每个请求300-400次操作。要执行请求,我使用Apache Jena的UpdateProcessor
和Blazegraph的SPARQL更新端点(http://localhost:9999/blazegraph/namespace/kb/update
):
UpdateProcessor processor = UpdateExecutionFactory.createRemote(request, updateUrl, client);
processor.execute()
这样的请求的执行时间在我的笔记本电脑上平均约5-7秒,但我也注意到Blazegraph本身的CPU和磁盘利用率虽然响应时间很长但仍然很低。我想,如果存在瓶颈,某些东西应该达到上限(100%的CPU,或高分辨率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版:
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)