lec12
dz / distributed_systems_MIT / lec12Summary
Distributed Transactions, Atomic Commit
Node Tree
-
distributed_transactions
- concurrency_control
- databases
- failures
- transaction
- atomic_commit
- high_availabilty_through_repl
Nodes
distributed_transactions | |
content | Distributed Transactions |
children | concurrency_control, databases, failures, transaction, atomic_commit |
atomic_commit | |
content | atomic commit |
parents | distributed_transactions, transaction |
concurrency_control | |
content | Concurrency Control |
children | optimistic, pessimistic, two_phase_locking |
parents | distributed_transactions, transaction |
transaction | |
content | Transaction |
children | concurrency_control, abort, atomic_commit |
parents | distributed_transactions |
databases | |
content | Databases |
children | correctness |
parents | distributed_transactions |
correctness | |
content | Correctness |
children | pessimistic, ACID |
parents | databases |
ACID | |
content | ACID |
children | consistent, durable, isolated, atomic_or_none |
parents | correctness |
atomic_or_none | |
content | Atomic or none, despite failures |
parents | ACID |
isolated | |
content | Isolated |
children | serializable |
parents | ACID |
consistent | |
content | Consistent |
parents | ACID |
serializable | |
content | Serializable |
children | easy_for_programmers, serializable_def (definition), abort |
parents | isolated |
durable | |
content | Durable |
children | nv_storage |
parents | ACID |
nv_storage | |
content | Non-volatile st9orage |
parents | durable |
easy_for_programmers | |
content | Easy model for programmers |
parents | serializable |
serializable_def | |
content | If order of execution of actions that yields same result |
parents | serializable |
remarks | wrote this verbatim from my notes, I think I am missing something |
abort | |
content | Abort |
children | fail_in_transaction, abort_retry |
parents | serializable, transaction |
fail_in_transaction | |
content | Fail or decide to fail in the middle of a transaction |
parents | abort |
pessimistic | |
content | Pessimistic |
parents | concurrency_control, correctness |
optimistic | |
content | Optimistic |
children | no_locks |
parents | concurrency_control |
no_locks | |
content | No Locks |
children | check_at_end |
parents | optimistic |
check_at_end | |
content | Check for interfering transaction only at end |
children | abort_retry |
parents | no_locks |
abort_retry | |
content | Abort and retry |
parents | abort, check_at_end |
two_phase_locking | |
content | Two-phase locking |
children | deadlock_easily_produceable, force_serial_order, acquire_lock_before_using |
parents | concurrency_control |
acquire_lock_before_using | |
content | Acquire lock before using record |
children | hold_until_done |
parents | two_phase_locking |
hold_until_done | |
content | Hold until done |
children | why_hold |
parents | acquire_lock_before_using |
why_hold | |
content | Why hold until transaction finished? |
children | avoid_instruction_interleaving |
parents | hold_until_done |
avoid_instruction_interleaving | |
content | Avoids instruction interleaving |
parents | why_hold |
force_serial_order | |
content | Can force serial order |
parents | two_phase_locking |
deadlock_easily_produceable | |
content | Easy to produce deadlock |
parents | two_phase_locking |
failures | |
content | Failures |
children | atomicity_against |
parents | distributed_transactions |
atomicity_against | |
content | Atomicity Against |
children | atomic_commit_protocol |
parents | failures |
atomic_commit_protocol | |
content | Atomic Commit Protocol |
children | two_phase_commit |
parents | atomicity_against |
two_phase_commit | |
content | Two-phase commit |
children | different_from_raft, evil_rep, low_availability, servers_diff_things, sharded_db, slow_lots_chitchat, transaction_coordinator |
parents | atomic_commit_protocol |
transaction_coordinator | |
content | Transaction coordinator |
children | computer_driving_commit (description), crash_stores, prepare_message, single_entity, timeout_block, what_if_fails |
parents | two_phase_commit |
computer_driving_commit | |
content | Computer Driving THe Commit |
children | transaction_id |
parents | transaction_coordinator |
transaction_id | |
content | Transaction ID |
parents | computer_driving_commit |
prepare_message | |
content | prepare message |
parents | transaction_coordinator |
what_if_fails | |
content | What if it fails |
children | before_sending_commit, cant_forget_might_have_committed, after_sending_commit |
parents | transaction_coordinator |
before_sending_commit | |
content | Before sending commit |
children | doesnt_matter |
parents | what_if_fails |
doesnt_matter | |
content | Doesn't matter |
parents | before_sending_commit |
cant_forget_might_have_committed | |
content | Can't forget anything that might have been committed |
children | after_sending_commit |
parents | what_if_fails |
after_sending_commit | |
content | After sending commit |
children | write_information_before_commit |
parents | cant_forget_might_have_committed, what_if_fails |
single_entity | |
content | Single Entity |
parents | transaction_coordinator |
crash_stores | |
content | "crash stores" |
parents | transaction_coordinator |
remarks | not sure what this, I had it in quotes |
write_information_before_commit | |
content | Write information (outcome, id) before sending commit messages |
children | receive_dup_commits |
parents | after_sending_commit |
receive_dup_commits | |
content | Participants prepared to receive duplicate commit messages |
parents | write_information_before_commit |
timeout_block | |
content | timeout/block |
children | b_times_out, critical_prop_2pc |
parents | transaction_coordinator |
critical_prop_2pc | |
content | Critical property of 2-phase commit |
parents | timeout_block |
b_times_out | |
content | B times out |
parents | timeout_block |
evil_rep | |
content | "evil" reputation |
parents | two_phase_commit |
slow_lots_chitchat | |
content | slow, lots of chitchat |
parents | two_phase_commit |
sharded_db | |
content | Used in shareded databse |
parents | two_phase_commit |
different_from_raft | |
content | Different from RAFT |
children | combine_2pc_raft, do_same_thing (RAFT does the same thing) |
parents | two_phase_commit |
low_availability | |
content | Low Availability |
parents | two_phase_commit |
servers_diff_things | |
content | Servers do different things |
children | do_same_thing (2pc servers do different things) |
parents | two_phase_commit |
do_same_thing | |
content | does the same thing |
parents | high_availabilty_through_repl, servers_diff_things, different_from_raft |
combine_2pc_raft | |
content | combine two-phase-commit with RAFT |
children | participants_in_cluster, ts_replicated_service |
parents | different_from_raft |
high_availabilty_through_repl | |
content | High availability through repl |
children | do_same_thing (RAFT has high availability) |
participants_in_cluster | |
content | Participants in Cluster |
parents | combine_2pc_raft |
ts_replicated_service | |
content | TS replicated servce |
parents | combine_2pc_raft |
remarks | not sure what TS stands for. |