data concurrency, consistency and integrity
DESCRIPTION
Data Concurrency, Consistency and Integrity. My goals. Managing Data Keep it valid Let people access it Start from simple models Build more complex ones High-Level Abstraction Oracle implementation No Code. You. Programming Databases Concurrency SQL Oracle. A Simple Model. Read - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/1.jpg)
Giovanni Chierico | May 2012 | Дубна
Data Concurrency, Consistency and Integrity
![Page 2: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/2.jpg)
Giovanni Chierico | May 2012 | Дубна
My goals
•Managing Data• Keep it valid• Let people access it
• Start from simple models• Build more complex ones• High-Level Abstraction•Oracle implementation•No Code
2
![Page 3: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/3.jpg)
Giovanni Chierico | May 2012 | Дубна
You
• Programming• Databases• Concurrency• SQL• Oracle
3
![Page 4: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/4.jpg)
Giovanni Chierico | May 2012 | Дубна
A Simple Model
Processor
Memory
Read Write
1.Read2.Process3.Write4.Read5.Process6.Write7.…
4
![Page 5: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/5.jpg)
Giovanni Chierico | May 2012 | Дубна
Increase a counter: Single User
1
1+1 2⇒
Time2 2
2+1 3⇒
3
5
![Page 6: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/6.jpg)
Giovanni Chierico | May 2012 | Дубна
Increase a counter: Multi User
1
1+1 2⇒
Time1 2 2
1+1 2⇒
6
![Page 7: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/7.jpg)
Giovanni Chierico | May 2012 | Дубна
Increase a counter: Multi User
1
1+1 2⇒
Time1 2
1+1 2⇒
2 3 2
2+1 3⇒
7
![Page 8: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/8.jpg)
Giovanni Chierico | May 2012 | Дубна
Locking
1
1+1 2⇒
Time1 2 2
1+1 2⇒
ReadLock
WriteLock
8
![Page 9: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/9.jpg)
Giovanni Chierico | May 2012 | Дубна
Concurrency
Data Concurrency means that many users can access data at the same time
Locks limit concurrency
9
![Page 10: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/10.jpg)
Giovanni Chierico | May 2012 | Дубна
Transfer Funds: Consistency
A:100€B:100€
Transfer 50€: (100,100) (50,150)⇒
A:50€B:100€
A:50€B:150€
T:200€ T:200€T:150€
10
![Page 11: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/11.jpg)
Giovanni Chierico | May 2012 | Дубна
Transaction
A transaction comprises a unit of work treated in a coherent and reliable way independent of other transactions.
11
![Page 12: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/12.jpg)
Giovanni Chierico | May 2012 | Дубна
Transfer Funds: Failures
A:100€B:100€
Transfer 50€: (100,100) (50,150)⇒
A:50€B:100€
Anything can go wrong at any time
12
![Page 13: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/13.jpg)
Giovanni Chierico | May 2012 | Дубна
Transaction Properties
•Atomicity (all or nothing)
•Consistency (From Valid to Valid)
•Isolation (No interference)
•Durability (Changes are reliably persisted)
ACID13
![Page 14: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/14.jpg)
Giovanni Chierico | May 2012 | Дубна
Commit
1
1+1 2⇒
2
1 1 2
Transaction#1
Transaction#2
Commit
Multiple versions must be kept14
![Page 15: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/15.jpg)
Giovanni Chierico | May 2012 | Дубна
Transfer Funds: Commit
A:100€B:100€
Transfer 50€
A:50€B:100€
A:50€B:150€
T:200€ T:200€ T:200€
Commit
T#1
T#2
15
![Page 16: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/16.jpg)
Giovanni Chierico | May 2012 | Дубна
Transfer Funds: Rollback
A:100€B:100€
Transfer 50€
A:50€B:100€
A:100€B:100€
Rollback
Automatic or user initiated
16
![Page 17: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/17.jpg)
Giovanni Chierico | May 2012 | Дубна
Transaction Isolation LevelsRead Phenomena
• Dirty Reads: read uncommitted data of another transaction
• Nonrepeatable & Phantom Reads: read changes committed by another transaction
Oracle Isolation Lvl Dirty Reads Nonrep & Phantom
Read Committed NO YES
Serializable NO NO
17
![Page 18: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/18.jpg)
Giovanni Chierico | May 2012 | Дубна
Oracle Read Consistency
Statement-Level Read Consistency is always guaranteed
Session-Level Read Consistency is guaranteed in only serializable mode
18
![Page 19: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/19.jpg)
Giovanni Chierico | May 2012 | Дубна
Oracle Read Consistency
A:50€B:150€
Transfer 50€
T#1
T#2
A:100€ B:100 or 150€?
Same read 100€⇒
Multiple reads• Read committed 150€⇒• Serializable 100€⇒
Same read?
A:100€B:100€
19
![Page 20: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/20.jpg)
Giovanni Chierico | May 2012 | Дубна
Multiversion Concurrency ControlSystem Change Number (SCN): the Oracle database “clock”, incremented at every insert, update, delete.
A 1 2 14
B 1 10 11 18 19
C 1 3 5
D 1 4 9 17
E 1 8 12
F 1 6 13 16
G 1 7 15
A query made at (SCN) time T return the most recent (highest SCN) records whose SCN is less or equal to T
Read SCN = 1Read SCN = 10
Readers never block WritersWriters never block Readers
*except when they do
*
20
![Page 21: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/21.jpg)
Giovanni Chierico | May 2012 | Дубна
Updates: LocksWrite 1
1
T#1
T#2
Commit
Write 2
2
CommitWait
21
![Page 22: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/22.jpg)
Giovanni Chierico | May 2012 | Дубна
Locks: Implicit Vs Explicit
• Implicit Locks• Automatic for every operation• Locks as little as possible for highest
concurrency
• Explicit Locking• transaction-level read consistency
(repeatable reads)• Cannot afford to wait once it has started
22
![Page 23: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/23.jpg)
Giovanni Chierico | May 2012 | Дубна
Increase a Counter
1.Read
2.Compute
3.Update
4.Commit
1.Read
2.Compute
3.Update
4.Commit
Wait
1
1
2
2
1
2
2
23
![Page 24: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/24.jpg)
Giovanni Chierico | May 2012 | Дубна
Increase a Counter
1.Lock2.Read 3.Compute4.Update5.Commit
1.Lock
2.Read 3.Compute4.Update5. Commit
Wait
1
1
22
2
33
24
![Page 25: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/25.jpg)
Giovanni Chierico | May 2012 | Дубна
Optimistic Locking1. Read Value & Version
2. Compute
3. Lock
4. Check if version changed. If no (1=1) then
5. Update Value & Version
6. Commit
A|1
1. Read Value & Version
2. Compute
3. Lock4. Check version ⇒ Exception
B|2
B
A|1A|1
C
25
![Page 26: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/26.jpg)
Giovanni Chierico | May 2012 | Дубна
Deadlocks
Transaction #2
Update B
Update A
Transaction #1
Update A
Update BWait #2Wait #1
Deadlock!
Avoid by always locking in the same order.
26
![Page 27: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/27.jpg)
Giovanni Chierico | May 2012 | Дубна
Data IntegrityEnforce Business Rules
Player• have a last name• have age > 0• have a unique login name• belong to a team (reference)
27
![Page 28: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/28.jpg)
Giovanni Chierico | May 2012 | Дубна
Unique Constraint
• Insert new player with login “chierico”• Check that no other “chierico” exists• Insert new “chierico” record• Make sure no one insert it between your
“check” and your “insert” ⇒1. Lock whole table Bad for Concurrency⇒2. Check3. Insert4. Commit
DBs offer a proper “unique” constraint.
28
![Page 29: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/29.jpg)
Giovanni Chierico | May 2012 | Дубна
Lessons Learned
• Always think about how others might use the data• No “one solution fits all”• Databases offer valuable abstractions• Flexible• Safe• Declarative
• Not all databases behave the same way
29
![Page 30: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/30.jpg)
Giovanni Chierico | May 2012 | Дубна
Q&A
30
![Page 31: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/31.jpg)
Giovanni Chierico | May 2012 | Дубна
спасибо
Globe of Science and Innovation, CERN
31
![Page 32: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/32.jpg)
Giovanni Chierico | May 2012 | Дубна 32
![Page 33: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/33.jpg)
Giovanni Chierico | May 2012 | Дубна 33
![Page 34: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/34.jpg)
Giovanni Chierico | May 2012 | Дубна 34
![Page 35: Data Concurrency, Consistency and Integrity](https://reader035.vdocuments.net/reader035/viewer/2022062301/56813537550346895d9c9cd5/html5/thumbnails/35.jpg)
Giovanni Chierico | May 2012 | Дубна 35