Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Your approach seems sound to me ...</p> <p>What you might have problems with however is ensuring <strong>causality</strong> between writes on separate subgraphs.</p> <p>If a writer alters subgraph A and another writer alters distinct subgraph B, but other read/write operations happen on subgraph C where A and B are in C then you need to ensure that the version of subgraph C aligns correctly with the versions of B and A.</p> <p>I would suggest a locking scheme in the DAG that incorporates subgraph locking for multiple read/single write from a given root. You will need to grep the graph for cyclic dependencies however to ensure that you don't get into a starvation/deadlock state within the graph.</p> <p>If your graph is <strong>distributed</strong> or your concurrent access has <strong>latency</strong> then your transaction system will be harder to implement and will likely require additional safeguards. </p> <p>Your versioning approach sounds fine providing your locking provisions ensure, in all cases that a set of revisions for nodes at any time T represent an <strong>integral state</strong> of the graph. The set of nodes and revisions at T = {n0, n1, n2, n3} and a concurrent revision bumping of subgraphs will pose the headache in keeping the entire set of revisions and nodes at T integral.</p> <p>As <a href="https://stackoverflow.com/questions/1159495/how-do-i-organize-multithreaded-access-to-a-graph/1159586#1159586">dfa suggests above</a>, the set of nodes and revisions at some point represents a changeset of the entire structure. Providing it has integrity, this represents the entire structure at some point in time.</p> <p>Remember: Time, Integrity, Causality and Concurrency</p> <p>Good Luck!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload