Critique of ANSI SQL Isolation Levels

Notes Types of locks - Write lock Read lock Predicate lock - Lock where multiple rows are locked for reads(WHERE clause) All of these locks are long locks(Meaning all are acquired first and then all are released)(2 Phase locking) If we wanna improve performance(and decrease isolation levels), we can reduce long locks to short locks. Types of anomalies - Phantom Reads is we do a search condition (using WHERE clause) and then Read1, Write1 and Read2....

Spanner

Notes Two strategies for implementing deadlock prevention used in 2-phase locking Wound wait - Force the lock to release from another transaction Wait die - Wait for lock to be released or die https://stackoverflow.com/questions/32794142/what-is-the-difference-between-wait-die-and-wound-wait-deadlock-prevention-a Distributed Transactions Two problems with distributed transactions Write ahead logging needs to happen on each shard There needs to be a flag on each shard indicating that its in the commit phase (because otherwise locks would be wounded) This is solved using 2-phase commit...

Causal Consistency

Notes Requirements for consistencies Linearizability Global ordering Completion to Invocation globally Sequential Global ordering Completion to Invocation per client Causal Completion to invocation per client Write and then later read dependency Transitivity for 1) #Causal and 2) #Causal Fork-join Causal Eventual

Eventual Consistency

Notes Dynamo is similar to a Distributed Hash Table meaning it uses consistent hashing. Dynamo is called a zero-hop DHT because each node has enough information about the whole consistent hashing ring that it can directly transfer any client to the server responsible for serving that key. Causes for the system not being linearizable Initializing replication factor but not having the same number of writes/reads Membership changes Discovery of membership changes is at different times, due to gossip protocol, causing writes to happen at different servers than intended....

MongoDB Replication

Notes Background Already existing scheme used db query for replication Replication scheme was in such a way that any follower could query any other follower Due to this when they tried to implement RAFT there was a mismatch between the architecture and algorithm. So they decided to change the algorithm to implement in existing architecture. Problem Querying will not give you the term number meaning you don’t know if you’re pulling from the leader or not and if the log entries are correct or not....