lec13
dz / distributed_systems_MIT / lec13Summary
Spanner
Node Tree
-
spanner
-
goals
- external_consistency
- read_only_transactions
- strong_consistency
- spanner_desc
- synchronized_time
- 2pc_paxos
- challenges
-
goals
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 |