根据the GraphDB documentation,可以直接对其底层RDF4J数据库进行编程。我的直觉违背了两个独立的应用程序可以同时访问相同的数据库文件。这是否正确处理,包括并发写入?
我相信GraphDB使用较旧的Sesame 2.9版本。文件格式是否已更改为最新的RDF4J 2.1版本?或者我是否需要使用这个较旧的芝麻版?
我认为,如果以上所有都是正确的,那么与HTTP连接相比,有一个很大的性能加值。有没有可用的测试结果呢?
答案 0 :(得分:2)
我认为这里有点混乱。 GraphDB没有基础RDF4J / Sesame数据库"。实际上反过来说:RDF4J / Sesame为RDF数据库提供标准化的Java访问API,而GraphDB是此API的实现。
您可以使用Sesame API以编程方式访问GraphDB存储,如GraphDB文档中所述。 Sesame提供了访问本地数据库(嵌入在您自己的应用程序中)或远程数据库(可通过HTTP访问)的方法。正如您所推测的那样,您无法使用多个应用程序在本地访问数据库 - 如果多个应用程序需要访问,您应该让两个应用程序通过HTTP访问数据库(或者让一个应用程序直接与另一个应用程序通信,但这需要一个很多自定义编码)。
至于Sesame 2.9 vs RDF4J,正如@ChristophE正确指出的那样,有一些差异(详见migration guide),因此你的GraphDB版本可能还不适用于RDF4J。然而,下一个即将发布的GraphDB将支持RDF4J。
至于性能:当然,与直接访问相比,HTTP上的通信会导致性能损失。我不会为你准确的数字,我很害怕。然而,Sesame / RDF4J本身以及GraphdB都经过精心设计,以尽可能地减少这种损失,所以它并不像你想象的那样相当。
答案 1 :(得分:1)
我相信GraphDB使用较旧的Sesame 2.9版本。有文件 格式是否更新了最新的RDF4J 2.1版本?或者我需要使用 这个较旧的芝麻版本呢?
Sesame 2.9仍然使用Java 7,Sesame 4和RDF4J使用Java 8
文件格式没有改变,但是编程API在Sesame2和4之间发生了很大的变化,所以如果GraphDB真的使用芝麻2.9而不是你需要使用相同的版本。
有关详细信息,请参阅http://docs.rdf4j.org/migration/