-
Notifications
You must be signed in to change notification settings - Fork 0
TR Concept Undo Journal Rollback
Turkce Dokumantasyon | English Documentation
Kategori: Mimari Kavramlar ve Prensipler
Alt Sistem: Islem Motoru (AmberDB::Transact)
Madde Turu: Mimari Kavram
Undo-Journal ACID Rollback ve Cokme Kurtarma Mekanizmasi, AmberDB'nin cok tablolu islemlerde Atomiklik (Atomicity) ve Tutarlilik (Consistency) garantilerini saglayan disk gunlugu sistemidir.
transact_start ile bir islem baslatildiginda, disk uzerinde o surece ozel bir geri alma gunlugu dosyasi olusturulur (dbstore/txn/amberdb_processid_timestamp.txn). Ana .db tablosunda veya turetilmis ikincil indeks dosyalarinda (.inx, .fld, .src, .fac, .srt) herhangi bir kayit degistirilmeden once, kaydin degismemis orijinal hali sirali olarak .txn dosyasina yazilir.
Islem sirasinda beklenmeyen bir hata, istisna veya Perl surecinin aniden sonlanmasi durumunda, AmberDB gunluk dosyasini Son Giren Ilk Cikar (LIFO) ters sirasiyla okuyarak tum tablolari ve indeksleri islemin basindaki haline eksiksiz dondurur.
Undo-Journal Calisma Akisi
1. transact_start() > .txn islem gunluk dosyasi olusturulur
2. Kayit Islemi (Insert/Modify) > .db degistirilmeden ONCE eski hali .txn'e yazilir
3. Normal Bitis (transact_end) > Degisiklikler diske basilir, .txn silinir
4. Hata / Surec Kesintisi / Cokme > .txn dosyasi LIFO sirasiyla calistirilip geri alinir
Sunucu elektriginin kesilmesi, kernel panigi veya surecin kill -9 ile disaridan oldurulmesi gibi durumlarda dbstore/txn/ altinda tamamlanmamis yetim .txn dosyalari kalir.
AmberDB bir sonraki baslatilmasinda (AmberDB->new), motor otomatik olarak transact_recover() metodunu calistirir:
-
dbstore/txn/altinda aktif olmayan sureclere ait tum.txndosyalarini tespit eder. - Gunlukteki degisiklikleri tersine isletir ve tablolari tutarli duruma getirir.
- Kurtarma tamamlandiktan sonra yetim
.txndosyalarini siler ve loglara bilgi duser.
# Iki hesap arasi bakiye transferinde otomatik undo-journal
$adb->transact_start();
eval {
# 1. A Hesabindan para dus
my @hesap_a = $adb->read_id("accounts", 1001);
$hesap_a[2] -= 500;
$adb->modify_id("accounts", @hesap_a);
# Hata simulasyonu
die "Banka baglanti hatasi olustu\n" if $hata_var;
# 2. B Hesabina para ekle
my @hesap_b = $adb->read_id("accounts", 1002);
$hesap_b[2] += 500;
$adb->modify_id("accounts", @hesap_b);
$adb->transact_end();
};
if ($@) {
# LIFO rollback mekanizmasi A Hesabinin bakiyesini eski haline geri dondurur
$adb->transact_rollback();
warn "Transfer iptal edildi: $@\n";
}AmberDB — High-Performance Schema-Driven NoSQL Database Engine for Perl.
Copyright 2005-2026 Maruf Cetin. Released under the Artistic License 2.0.
CPAN · GitHub Repository · Issue Tracker
- Berkeley DB (DB_File) Engine
- AmberDB Table Schema
- Global Flags
- Table Schema Flags
- Directory Structure
- File Structure (Extensions)
- Repeat Blocks
- Auto-Increment ID
- ASCII ID
- Relational Records
- Record Anatomy
- JOIN-Free Architecture
- Packed Binary Index
- Strict 2PL Locking
- Undo Journal & Rollback
- Tiered Junk Indexing
- Disjunctive Faceting
- Phonetic Accent Search
- 2-Pillar Disaster Recovery
- RAM-Disk Acceleration
- In-Memory Schema Mutation
- Simple Mode
- new
- config
- set_datadir
- insert_id
- insert_list
- modify_id
- modify_list
- delete_id
- delete_list
- read_id
- read_all
- read_list
- exist_id
- exist_list
- exist_table
- table_count
- table_keys
- table_lastid
- table_attr
- table_create
- field_fetch
- field_filter
- search_table
- facet_menu
- field_fltkeys
- field_allfltkeys
- facet_rules
- slug_read
- slug_fetch
- transact_start
- transact_end
- transact_commit
- transact_rollback
- transact_recover
- flock_open
- flock_close
- cache_setup
- cache_read
- cache_write
- cache_delete
- cache_preload
- cache_ensure
- buffer_write
- buffer_read
- buffer_delete
- recs_scan
- recs_get
- recs_put
- recs_del
- locale_uc
- locale_lc
- locale_sort
- locale_to_ascii
- locale_num2text
- locale_format_currency
- locale_format_date
- array_sort
- array_punch
- array_filter
- array_sublist
- deep_copy
- log_owner
- use_counter
- use_junk
- keep_deleted
- auto_id
- buffer_write
- simple
- no_write
- no_backup
- jnktype
- keys_only
- id_type
- language
- .db · .table · .dbase
- .inx · .fld · .src
- .fac · .srt · .slg
- .unq · .del · .aut
- .cnt · .txn · .amberdb
- .csv · .cache · .tmp