Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@sitano
Created June 26, 2019 12:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sitano/2d89de5516b159df270bffef6127b8d5 to your computer and use it in GitHub Desktop.
Save sitano/2d89de5516b159df270bffef6127b8d5 to your computer and use it in GitHub Desktop.
About a DSG and depedency edges in Generalized Isolation Level Definitions

Hi, Adrian!

Hope you are doing well! I also hope this is the right email of yours.

I am writing to you about your article https://blog.acolyer.org/2016/02/25/generalized-isolation-level-definitions/ . I've tried to write a comment on the site, but WordPress does not show up it.

Reading an article, the phrases:

A transaction T1 depends on T2 if there is a path in the graph from T1 to T2. It directly depends on T2 if there is an edge from T1 to T2... add a read dependency edge from T2 to T1 if any of the following conditions hold

really confuses a reader and everything that says that there is a dependency edge from T2 to T1 because when you read the article it's not very clear is it about dependency between transactions or about a "dependency" edge in the graph (DSG) because they have OPPOSITE directions.

Moreover, the mentioned directions are seemed to be wrong if I get the original paper right:

There is a read/write/anti-dependency edge from transaction Ti to transaction Tj if Tj directly read/write/anti-depends on Ti.

As you can see it is the opposite of what is written in the aforementioned sentences:

  1. If there is a dependency edge (arrow) from Ti -> Tj (read T1 -> T2) then the Tj (T2) depends on Ti (T1).
  2. Tj directly depends on Ti if there is an dependency edge (arrow) from Ti -> Tj (T1 -> T2 => T2 depends on T1)
  3. In an example, it must be: "add a read dependency edge from T1 to T2 if any of the following conditions hold... (T2 read depends on T1: T1 --wr-->T2, that means that T1 installs a new version Xi and then T2 reads just installed version Xi by the T1)". If there is a dep-edge from T1 -> T2 then T2 depends on T1. That's it. i.e. if T1 --wr--> T2, T1 writes and T2 reads X, and thus its a read-dependency, and T2 read-depends on T1.

Also, it would be much beneficial for this article to include Figure 2 "Definitions of direct conflicts between transaction" with graphs.

Hope, I get it right. If that's the case, plz recheck my thoughts, as there was no one to review this.

-- Kind regards, Ivan Prisyazhnyy, Software Engineer, john.koepi@gmail.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment