-
Notifications
You must be signed in to change notification settings - Fork 0
TR Concept Auto ID
Turkce Dokumantasyon | English Documentation
Kategori: Mimari Kavramlar ve Prensipler
Alt Sistem: Birincil Anahtar Mimarisi (AmberDB::Base&AmberDB::Index)
Madde Turu: ID Yonetim Mimarisi
AmberDB, kayitlarin benzersiz kimliklendirilmesi icin 64-bit Otomatik Artan Tam Sayi (Auto-Increment ID) mekanizmasina sahiptir.
Bir tabloda auto_id => 1 (varsayilan) ve id_type => "num" tanimli oldugunda, insert_id cagrilarinda 0. indiste 0, undef veya bos string ("") gecilmesi motorun o tablo icin siradaki en buyuk benzersiz tam sayiyi atomik olarak tahsis etmesini saglar.
Otomatik ID Tahsis Mimarisi
Uygulama: $adb->insert_id("tablo", 0, "Urun A", ...)
|
v
┌─────────────────────────────────────────────────────────────┐
│ .inx Baslik Bloğu (Header) ve OS flock Kilidi │
│ - Son Kullanilan ID (Last ID): 1045 │
│ - Toplam Kayit Sayisi (Record Count): 820 │
└─────────────────────────────────────────────────────────────┘
|
v
Yeni ID Hesaplanir: 1045 + 1 = 1046
.inx Basligi Guncellenir ──> 1046
.inx Binary Govdesine 8-Bayt (Q*) Olarak Eklenir
.db Ana Tablosuna [1046, "Urun A", ...] Olarak Yazilir
|
v
Dönen Deger: 1046 (Uygulama $record[0]'a atar)
Birden fazla bagimsiz web veya worker sureci (Starman, Fork, Apache worker'lari) ayni anda insert_id veya insert_list cagirdiginda:
- AmberDB, ilgili tablonun
.inxdosyasina isletim sistemi seviyesinde ozel birflockyazma kilidi alir. - Basliktaki en son ID okunur, 1 arttirilir ve aninda kaydedilir.
- Kilit birakilir.
- Bu mekanizma, paralel calisan yuzlerce surec altinda dahi asla ayni ID'nin iki farkli kayda verilmemesini (Zero Collision) garanti eder.
use AmberDB;
my $adb = AmberDB->new(path => { dbase_dir => "./dbstore" });
# 0. indiste 0 vererek ekleme
my @kayit = ( 0, "Laptop Standi", "Aksesuar", 499.00 );
my $yeni_id = $kayit[0] = $adb->insert_id("products", @kayit);
print "Uretilen Yeni ID: $yeni_id\n"; # Orn: 1001# Tabloda uretilen en buyuk son ID'yi ogrenme ($O(1) inx baslik okumasi)
my $son_id = $adb->table_lastid("products");
print "En Son ID: $son_id\n";
# Tablodaki toplam aktif kayit sayisi ($O(1) inx baslik okumasi)
my $toplam_kayit = $adb->table_count("products");
print "Toplam Aktif Urun: $toplam_kayit\n";Eger harici bir sistemden gelen mevcut bir ID'yi kullanmak isterseniz:
- Tablo semasinda
auto_id => 0yapabilir veya -
insert_idcagirirken 0. indise acikca ID degerini (orn:15004) yazabilirsiniz. Motor verilen ID'yi kaydeder ve.inxdizinini buna gore gunceller.
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