[ 
https://issues.apache.org/jira/browse/JENA-1274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15809288#comment-15809288
 ] 

Andy Seaborne commented on JENA-1274:
-------------------------------------

Looks interesting!

GH does not make discussions of branches as easy as PRs (I have just 
discovered!). It is possible to PR a branch on the codebase it is a branch of.

I'm not clear what the background for this is.

I don't want to wrongly guess the pros and cons of various approaches. Could 
you say some more about what the usage is compared to, say, one dataset per 
resource, only use the default graph (which is not the same, but is one LDP 
setup)? About whether "default union graph" may be in use?

Isn't the contract "One writable graph per txn" rather than "per-graph writer"? 
"getGraph" seems to throw an exception if a second graph is touched.

A generalization is 2-phase locking (2PL) on graphs. Each time "getGraph" is 
called in a transaction, a lock is taken and the write lock set for this 
transaction grows. Keepa global lock set as well. Then check if the graph is 
locked by another transaction and abort (deadlock has just occured). Write 
locks are kept until the end of transaction, not released part way through - 
this is 2PL and has well defined properties about deadlock. The serialization 
level across the dataset is read-commited.

This leads to another question/area - how does this play out if sometimes its 
LDP-style mixed with  whole dataset style operations: e.g. SPARQL {{COPY GRAPH 
<G1> INTO GRAPH <G2>}} or the API sequence: {{model1.add(model2)}}, in graph 
SPI terms: {{GraphUtil.addInto(graph1, graph2) ;}}?


> Support a writer-per-graph in-memory dataset
> --------------------------------------------
>
>                 Key: JENA-1274
>                 URL: https://issues.apache.org/jira/browse/JENA-1274
>             Project: Apache Jena
>          Issue Type: Improvement
>          Components: ARQ, Jena
>            Reporter: A. Soroka
>            Assignee: A. Soroka
>            Priority: Minor
>              Labels: ldp, multithreading, named_graphs
>
> Without too much work we could support a writer-per-graph in-memory dataset. 
> The target use case here is LDP-style interaction or other RESTful 
> architectures, where it is normal for updates to occur centered on one 
> resource.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to