Principles Of Distributed Database Systems Exercise Solutions [cracked] May 2026
Orders ⋉ Customers’ = σ_CustID in (Paris CustIDs)(Orders). Assume each customer has 5 orders → 2500 orders remain.
Now read_TS(D)=5, write_TS(D)=20. TS(T1)=10 < write_TS(D)=20 → reject (obsolete write). TS(T1)=10 < write_TS(D)=20 → reject (obsolete write)
T1’s write is rejected (rolled back/restarted) because a later transaction already wrote D. 4. Distributed Recovery & Commit – Exercises Exercise 4.1: Two-Phase Commit (2PC) with Coordinator Failure Problem: Participants P1, P2, P3. Coordinator C sends PREPARE, receives YES from all, sends COMMIT to P1 and P2, then crashes before sending to P3. What happens? Distributed Recovery & Commit – Exercises Exercise 4
Semi-join reduces cost significantly. The semi-join expression: Orders ⋉ (π_CustID(σ_City=‘Paris’(Customers))) 3. Distributed Concurrency Control – Exercises Exercise 3.1: Centralized 2PL vs. Distributed 2PL Problem: Transactions T1 and T2 at different sites access data items A (site 1), B (site 2), C (site 3). Compare centralized two-phase locking (one lock manager) vs. distributed 2PL (each site has its own lock manager). Show possible deadlock risks. Show possible deadlock risks.
