我想爲Optimistic vs. Pessimistic locking樂觀鎖或有條件更新
提到我有以下數據
:foo
:hasProp 'bar';
:hasVersion '3'^^xsd:nonNegativeInteger
.
一個會話查詢這些數據,並保存在內存中的信息來實現類似「樂觀鎖定」。 然後它想要發佈更新。
當傳遞的版本是'3'時,我只想要更新成功,這意味着自從會話已讀:foo
以來沒有發生更新。
有沒有一種方法,使當通過的版本是!= 3
失敗更新查詢否則成功和更新:hasVersion
到'4'^^xsd:nonNegativeInteger
和例如:hasProp
到baz
?
我覺得要注意並記住SPARQL沒有鎖,也沒有交易,也沒有各種相關功能,不同於SQL是很重要的。一般而言,每個三元組(或有時候,每個四元組)都被原子處理。未來的發展可能會允許每個命名圖都被視爲一個存儲中的原子(可能是可鎖定的)實體,類似於SQL中的表。 SQL的行級鎖定概念上看起來像是每個包含'?s'或'?o'位置的給定實體的三元組的SPARQL鎖。 – TallTed
@TallTed謝謝你的提示。我期望一個更新查詢被視爲一個事務。你認爲情況並非如此。我目前正在試驗支持事務的Stardog,但我也對其他系統的信息感興趣。 –
SPARQL更新的每個SPARQL查詢應該在SPARQL協議調用時自動發生。本地API可能不同,但可能提供某種級別的併發或事務控制。 – AndyS