distributed_systems_MIT/lec13

lec13

dz / distributed_systems_MIT / lec13

Summary

Spanner

Node Tree

Nodes

spanner
content Spanner
children goals, spanner_desc, synchronized_time, 2pc_paxos, challenges

spanner_desc
content Provides distrubuted transactions over data that is widely separated
parents spanner

synchronized_time
content synchronized time
children government_labs, transaction_timestamp, uncertainty, clocks_not_synced
parents snapshot_isolation, spanner

2pc_paxos
content 2-phase commit over paxos replicated participants
children paxos, 2pc
parents spanner

goals
content goals
children external_consistency, read_only_transactions, strong_consistency
parents spanner

read_only_transactions
content Read-only transactions
children read_only
parents goals

strong_consistency
content Strong consistency
children transactions
parents goals

external_consistency
content External Consistency
children ext_cons_def (definition), linearizability, violation_ext_cons
parents goals

challenges
content Challenges
children reads_local_data
parents spanner

reads_local_data
content Reads from local data replica for speed
children outdated_replica, stay_up_to_date
parents challenges

stay_up_to_date
content How to stay up-to-date?
children outdated_replica
parents reads_local_data

outdated_replica
content Local replica may be out of date
parents reads_local_data, stay_up_to_date

transactions
content Transactions
children read_only, readwrite, 2_rules
parents strong_consistency

readwrite
content Readwrite
children huge_amt_messages, locking_ensures_serialization, 2pc
parents transactions

locking_ensures_serialization
content Locking ensures serialization
parents readwrite

2pc
content 2-phase commit
children paxos_instead_of_servers, blocking
parents 2pc_paxos, readwrite

blocking
content blocking
children replicate_transaction_mgr (solution)
parents 2pc

paxos
content paxos
children replicate_transaction_mgr
parents 2pc_paxos

replicate_transaction_mgr
content Solved by replicating transaction manager
parents blocking, paxos

paxos_instead_of_servers
content Paxos replicated groups instead of individual servers
parents 2pc

huge_amt_messages
content Huge amount of messages
children avoiding_preferrable
parents readwrite

avoiding_preferrable
content Slow enough that avoiding is preferrable
parents read_only, huge_amt_messages

read_only
content Read-only
children complex_approach, latest_copy_local_replica, local_read, multi_version_db, no_locks, read_lower_ts, snapshot_isolation, still_serializable, avoiding_preferrable (justification for readonly transactions)
parents read_only_transactions, transactions

still_serializable
content Serializable (still)
parents read_only

linearizability
content Linearizability
parents external_consistency

local_read
content Local read
parents read_only

no_locks
content No Locks
parents read_only

latest_copy_local_replica
content What if you simply read the latest copy in the local replica?
children not_serializable
parents read_only

not_serializable
content Not serializable
parents latest_copy_local_replica

snapshot_isolation
content Snapshot isolation
children synchronized_time, transaction_timestamp
parents read_only

complex_approach
content Complex Approach
parents read_only

ext_cons_def
content If one transaction commits, and another transaction starts in realtime, it is required to see that first commit
parents external_consistency

transaction_timestamp
content Transaction Timestamp
children exec_ts_order, blows_up_storage
parents snapshot_isolation, synchronized_time

exec_ts_order
content executions arranged by timestamp order
parents transaction_timestamp

multi_version_db
content Multi-version database
parents read_only

read_lower_ts
content Only read transactions with lower timestamp
children stale_data_allowed, too_old
parents read_only

stale_data_allowed
content Stale data allowed because concurrency in linearizability
children concurrent
parents read_lower_ts

concurrent
content concurrent
parents stale_data_allowed

blows_up_storage
content Blows up storage
children forget_some_history
parents transaction_timestamp

forget_some_history
content forget some history?
parents blows_up_storage

too_old
content What if too old? (not in visible transaction)
children safe_time
parents read_lower_ts

safe_time
content Safe Time
children replicas_wait_to_respond, true_time (what is produced by safe time (I think?))
parents too_old

replicas_wait_to_respond
content Replicas do not respond until they know everything
parents safe_time

clocks_not_synced
content What if clocks aren't synced?
children ro_ts_too_large, rw_okay, too_slow
parents synchronized_time

rw_okay
content Readwrite transactions are okay, due to locks
parents clocks_not_synced

ro_ts_too_large
content Readonly timestamp too large?
children wait_for_paxos
parents clocks_not_synced

wait_for_paxos
content Wait for Paxos leader to catch up
parents ro_ts_too_large

too_slow
content Too slow?
children violation_ext_cons
parents clocks_not_synced

violation_ext_cons
content Violation of external consistency
parents external_consistency, too_slow

government_labs
content "Time comes from government labs"
children UTC
parents synchronized_time

UTC
content UTC
children GPS
parents government_labs

GPS
content GPS Satellite
children GPS_rec
parents UTC

GPS_rec
content GPS receiver
children time_master
parents GPS

time_master
content Time Master
children true_time
parents GPS_rec

uncertainty
content Uncertainty in time
children network_var_delay, sat_delay, time_pair (window of time to account for time uncertainty)
parents synchronized_time

sat_delay
content Propagation delay from satellite
parents uncertainty

network_var_delay
content network communication variable delay
parents uncertainty

true_time
content TrueTime
parents safe_time, time_master

time_pair
content Pair of earliest/latest possible times
parents uncertainty

2_rules
content 2 rules for transactions
children start_rule (rule), commit_wait (rule)
parents transactions

start_rule
content Start rule
children ro_commit, rw_start, start_rule_desc (description)
parents 2_rules

start_rule_desc
content Transaction timestamp has to be equal to latest half of truetime pair.
children guaranteed_not_happened
parents start_rule

guaranteed_not_happened
content Guaranteed not to have happned yet
parents start_rule_desc

commit_wait
content Commit Wait
parents 2_rules

rw_start
content R/W start
parents start_rule

ro_commit
content R/O commit
parents start_rule