-
Notifications
You must be signed in to change notification settings - Fork 0
TR Guide CRUD Islemleri
Turkce Dokumantasyon | English Documentation
Kategori: Baslangic ve Temel Rehberler
Alt Sistem: Veri Manipulasyon Katmani (AmberDB::Base)
Madde Turu: CRUD Kullanim Rehberi
AmberDB'de veri kayitlari, Perl dilinin dogal dizi (@record) yapisi ile temsil edilir. Birincil anahtar (Primary Key ID) her zaman dizinin ilk elemaninda ($record[0]) yer alir:
AmberDB Kayit Dizi Mimarisi (@record)
[0] [1] [2] [3] [4]...
ID (PK) ──> Blok 1 (Ad) ──> Blok 2 (Ktg) ──> Blok 3 (Fyt)──> Blok 4 (JSON / Ref)
CRUD operasyonlari tekil islemler (insert_id, read_id, modify_id, delete_id) ve yuksek basarimli toplu islem boru hatlari (insert_list, read_list, modify_list, delete_list) olmak uzere iki grupta incelenir.
Yeni kayit eklenirken dizinin 0. indisine 0 veya undef atanir. insert_id cagrildiginda motor benzersiz bir 64-bit otomatik ID uretir, tum ikincil indeksleri (.inx, .fld, .src, .fac, .srt, .slg) aninda gunceller ve uretilen yeni ID'yi dondurur.
# 0. indiste 0 ile tanimlama
my @yeni_kullanici = (
0, # [0] Otomatik ID
"Mehmet Demir", # [1] Ad Soyad
"mehmet@ornek.com", # [2] E-Posta
"Musteri", # [3] Rol
1, # [4] Durum
);
# insert_id cagrisi - uretilen ID doner ve $yeni_kullanici[0]'a atanir
my $id = $yeni_kullanici[0] = $adb->insert_id("member_users", @yeni_kullanici);
print "Kullanici eklendi, ID: $id\n";Binlerce kaydi yuksek hizla eklemek icin tek tek insert_id cagirmak yerine insert_list kullanilir. Ana .db dosyasi tek bir kilit altinda acilir, kayitlar eklenir ve indeksler tek geciste birlestirilir (50x-100x daha hizlidir).
# Toplu ekleme: Dizi referanslari listesi dogrudan aktarilir:
my @toplu_kayitlar = (
[ 0, "Urun 1", "Elektronik", 100.00 ],
[ 0, "Urun 2", "Giyim", 45.50 ],
[ 0, "Urun 3", "Kitap", 25.00 ],
);
# Eklenen kayitlarin ID durum ozeti ($statu->{ID} = 1) doner:
my $statu = $adb->insert_list("catalog_products", @toplu_kayitlar);
print "Toplu ekleme tamamlandi. Eklenen ID'ler: " . join(", ", keys %$statu) . "\n";my @kullanici = $adb->read_id("member_users", $id);
if (@kullanici) {
my $kullanici_id = $kullanici[0]; # $id
my $ad = $kullanici[1]; # "Mehmet Demir"
my $eposta = $kullanici[2]; # "mehmet@ornek.com"
} else {
print "Kullanici bulunamadi.\n";
}read_all metodu sirali tarama, sayfalama ve bellek tasarruflu ID akislari saglar:
# 1. Tum kayitlari sayfasiz okuma
my @tum_kayitlar = $adb->read_all("member_users");
# 2. Sayfali okuma (limit > 0: Ilk donus degeri toplam eslesen tamsayisidir)
my ($toplam_sayi, @sayfa) = $adb->read_all(
"member_users",
start => 0,
limit => 20,
sort => -1 # 1. bloka gore artan sirala
);
# 3. Yalnizca ID'leri okuma (keys_only - ultra dusuk bellek)
my ($toplam, @sayfa_idleri) = $adb->read_all("member_users", 0, 50, keys_only => 1);Belirtilen ID listesindeki kayitlari, verilen siralama dizilisini koruyarak toplu olarak getirir:
# Verilen ID siralamasini koruyarak toplu okuma
my @liste = $adb->read_list("member_users", [ 1001, 1005, 1009 ]);
for my $kullanici (@liste) {
print "ID: $kullanici->[0] | Isim: $kullanici->[1] | E-Posta: $kullanici->[2]\n";
}Tum kayit govdesini diskten okuyup deserilestirmeden, yalnizca anahtarin varligini
# Tekil ID varlik denetimi
if ($adb->exist_id("member_users", $id)) {
print "Kullanici kaydi mevcut.\n";
}
# Toplu ID varlik denetimi (Hash referansi doner: $statu->{ID} = 1)
my $varlik_haritasi = $adb->exist_list("member_users", 1001, 1005, 9999);
if ($varlik_haritasi->{1001}) {
print "1001 numarali kullanici veritabaninda var.\n";
}Kaydi guncellemek icin dizinin 0. indisinde gercek ID bulunmalidir. modify_id eski indeksleri temizler ve yeni degerleri indeksler:
# Once kaydi okuyalim
my @kayit = $adb->read_id("member_users", $id);
# Istenen alanlari guncelleyelim
$kayit[1] = "Mehmet Demir (Guncel)";
$kayit[4] = 2; # Durum: Pasif
# Veritabanina yazalim
$adb->modify_id("member_users", @kayit);
print "Kullanici basariyla guncellendi.\n";my @guncellenecekler = (
[ 1001, "Mehmet D.", "mehmet@ornek.com", "Yonetici", 1 ],
[ 1002, "Ayse K.", "ayse@ornek.com", "Musteri", 1 ],
);
# Toplu liste dogrudan dizi olarak aktarilir:
my $statu = $adb->modify_list("member_users", @guncellenecekler);Kayit silindiginde birincil indeks (.inx), arama indeksleri (.src), eslesme indeksleri (.fld) ve facet indekslerinden temizlenir. Tabloda keep_deleted => 1 tanimliysa kayit kalici olarak silinmek yerine .del cop kutusu tablosuna tasinir.
# Tek kaydi silme
$adb->delete_id("member_users", $id);
print "Kullanici silindi.\n";# Coklu ID'leri tek kilit altinda toplu silme
my $silinenler = $adb->delete_list("member_users", 1001, 1002, 1003);
# veya bir ID dizisiyle:
my @silinecekler = ( 1001, 1002, 1003 );
$adb->delete_list("member_users", @silinecekler);| CRUD Islevi | Tekil Metot | Zaman | Toplu Metot | Zaman | Aciklama |
|---|---|---|---|---|---|
| Create | insert_id |
insert_list |
Otomatik 64-bit ID uretimi ve indeksleme | ||
| Read | read_id |
read_list |
0. indiste gercek ID garantisi | ||
| Exist | exist_id |
exist_list |
Deserilestirme yapmadan ultra hizli varlik denetimi | ||
| Read All | read_all |
table_keys |
Paketli binary indeks dilimleme ($^*$limitli sayfalama) | ||
| Update | modify_id |
modify_list |
Eski indekslerin temizlenmesi ve esitleme | ||
| Delete | delete_id |
delete_list |
Sert silme veya keep_deleted cop kutusu |
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