2016-11-07 33 views
1

根據the GraphDB documentation,可以直接對其底層的RDF4J數據庫進行編程。與我的直覺相反,相同的數據庫文件可以同時由兩個獨立的應用程序訪問。這是否正確處理,包括併發寫入?應用程序可以直接針對GraphDB的底層RDF4J數據庫進行編程嗎?

我相信GraphDB使用較老的Sesame 2.9版本。文件格式是否隨最新的RDF4J 2.1版本更改?或者我需要使用這個較舊的芝麻版本嗎?

我假設,如果以上所有內容都是正確的,那麼與HTTP連接相比,存在巨大的性能優勢。是否有任何測試結果可用於支持此?

回答

1

我相信GraphDB使用舊版本的Sesame 2.9版本。文件 格式是否隨最新的RDF4J 2.1版本更改?或者,我需要使用 這個舊的芝麻版本嗎?

芝麻2.9仍使用Java 7,芝麻4和RDF4J使用Java 8

的文件格式並沒有改變,但編程API改變Sesame2和4之間頗有幾分所以如果GraphDB真正使用芝麻2.9比你需要使用相同的版本。

更多信息又見http://docs.rdf4j.org/migration/

2

我覺得有一點混亂這裏。 GraphDB沒有「底層RDF4J /芝麻數據庫」。事實上,RDF4J/Sesame爲RDF數據庫提供了一個標準化的Java訪問API,GraphDB是該API的一個實現。

您可以使用Sesame API以編程方式訪問GraphDB存儲,如GraphDB文檔中所述。芝麻提供了訪問本地數據庫(嵌入在您自己的應用程序中)或遠程數據庫(可通過HTTP訪問)的方式。正如你猜測的那樣,你不能在多個應用程序本地訪問數據庫 - 如果有多個應用程序需要訪問,你應該讓這兩個應用程序都通過HTTP訪問數據庫(或者讓一個應用程序直接與另一個應用程序對話,但這需要一個很多自定義編碼)。

至於芝麻2.9與RDF4J,正如@ChristophE正確指出的那樣,存在一些差異(詳情請參閱migration guide),所以您的GraphDB版本可能還不能與RDF4J一起使用。然而,下一個即將發佈的GraphDB將支持RDF4J。

至於性能:當然,與直接訪問相比,通過HTTP進行通信會導致性能損失。恐怕我沒有確切的數字。然而,Sesame/RDF4J本身以及GraphdB的設計都儘可能地減少了這種損失,所以它不是相當於就像你想象的那樣糟糕。

相關問題