1016 B
1016 B
İşlemler ve MVCC
MVCC (Multi-Version Concurrency Control), snapshot izolasyonu ve deadlock algılama ile.
Kullanım
import barabadb/core/mvcc
var tm = newTxnManager()
let txn = tm.beginTxn()
discard tm.write(txn, "key1", cast[seq[byte]]("value1"))
discard tm.write(txn, "key2", cast[seq[byte]]("value2"))
tm.savepoint(txn)
discard tm.write(txn, "key3", cast[seq[byte]]("value3"))
discard tm.rollbackToSavepoint(txn)
discard tm.commit(txn)
İşlem İzolasyonu
BaraDB snapshot izolasyonu kullanır:
- Okuyucular yazıcıları engellemez
- Yazıcılar okuyucuları engellemez
- Her işlem tutarlı bir snapshot görür
Deadlock Algılama
import barabadb/core/deadlock
var detector = newDeadlockDetector()
if detector.detectCycle(txn1, txn2):
echo "Deadlock algılandı!"
Resmi Doğrulama
MVCC/Snapshot Isolation protokolü TLA+'da resmi olarak belirtilmiştir:
cd formal-verification
java -cp tla2tools.jar tlc2.TLC -config models/mvcc.cfg mvcc.tla