-
Notifications
You must be signed in to change notification settings - Fork 0
TR Concept Record Anatomy
Turkce Dokumantasyon | English Documentation
Kategori: Mimari Kavramlar ve Prensipler
Alt Sistem: Veri Modeli ve Serilestirme (AmberDB::Base)
Madde Turu: Mimari Kavram
AmberDB'de bir veritabani kaydi (dokuman), Perl ortaminda dogal ve kesintisiz bir dizi yapisi (@record) olarak temsil edilir. Katı sutun sinirlarina ve sema degisikligi icin tablo kilitlerine ihtiyac duyan iliskisel SQL sistemlerinin aksine, AmberDB kayitlari hem duz skalarlari (metin, sayi) hem de ic ice dizi referanslarini (ARRAY-ref) ve sozlukleri (HASH-ref) dogrudan tasiyabilen esnek veri bloklarindan olusur.
AmberDB mimarisinin en temel degismezi 0. Indis Birincil Anahtar Kuralidir: Kayit dizisinin ilk elemani ($record[0]), tum CRUD ve indeksleme asamalarinda kesin olarak o kaydin benzersiz Birincil Anahtar ID'sini (Primary Key ID) ifade eder.
Kesintisiz Kayit Dizisi Yapisi (@record)
0. Indis 1. Indis 2. Indis 3. Indis 4. Indis ...
Kayit ID 1. Veri Bloku 2. Veri Bloku 3. Veri Bloku 4. Veri Bloku
(Primary Key) (Skalar Metin) (Iliskisel CSV) (Ic ice Dizi) (Ic ice Hash/JSON)
-
Otomatik ID Uretimi:
insert_id($tablo, 0, ...)ile yeni bir kayit eklenirken 0. indise0,undefveya""atanmasi motorun otomatik artan 64-bit tam sayi bir ID uretmesini saglar. -
Acik ID: Uygulama isterse kendisi belirledigi benzersiz bir ID degerini (konfigurasyondaki
id_typeayarina gore numerik veya ASCII) verebilir. -
Geri Donus Garantisi: Tum okuma metotlari (
read_id,read_all,field_fetch,search_table) dondurulen listenin 0. indisinde her zaman o kaydin gercek ID'sini dondurur.
-
- indisten itibaren gelen tum elemanlar tablonun semasinda (
schema/*.table) tanimlanan veri alanlarini olusturur.
- indisten itibaren gelen tum elemanlar tablonun semasinda (
- Bloklar su tipleri barindirabilir:
- Skalarlar: Duz metinler, tam sayilar, ondalikli fiyatlar, tarihler.
-
Iliskisel Liste: Virgul veya ozel ayiracli kimlik listeleri (orn:
"5,12,89"). -
Dizi Referanslari (
[... ]): Ic ice alt maddeler, ozellik matrisleri. -
Hash Referanslari (
{ ... }): Ek JSON benzeri sozluk alanlari.
- Kayitlar, alt katmandaki Berkeley DB (
DB_File) ana tablosuna (.db) yazilirken AmberDB'nin sifir bagimlilikli yuksek hizli serilestiricisi tarafindan optimize edilmis bir bayt akisina cevrilir. - Ozel bayt ayiraclari bloklari birbirinden ayirir; ic ice referanslar otomatik paketlenir.
- Diskten okuma yapildiginda, ic ice yapilar otomatik olarak yeniden yerel Perl referanslarina donusturulur; ilave JSON parse etme yukune gerek kalmaz.
use AmberDB;
my $adb = AmberDB->new(path => { dbase_dir => "./dbstore" });
# 1. 0. indiste 0 verilerek otomatik ID ile kayit dizisi tanimlama
my @kayit = (
0, # [0] Otomatik ID
"Kablosuz Gurultu Engelleyici Kulaklik", # [1] Urun Adi (Skalar)
"Elektronik,Ses", # [2] Kategori Etiketleri (CSV)
2499.90, # [3] Fiyat (Sayisal)
["Siyah", "Gumus", "Gece Mavisi" ], # [4] Renk Varyantlari (ARRAY-ref)
{ bluetooth => "5.3", anc => 1 }, # [5] Teknik Ozellikler (HASH-ref)
);
# 2. Kayit ekleme - uretilen ID doner ve $kayit[0]'a atanir
my $id = $kayit[0] = $adb->insert_id("catalog_product", @kayit);
print "Eklenen Urun ID: $id\n";
# 3. Veritabanindan geri okuma
my @gelen = $adb->read_id("catalog_product", $id);
my $urun_id = $gelen[0]; # 1001
my $ad = $gelen[1]; # "Kablosuz Gurultu Engelleyici Kulaklik"
my $renkler = $gelen[4]; # ["Siyah", "Gumus", "Gece Mavisi" ]
my $ozellik = $gelen[5]; # { bluetooth => "5.3", anc => 1 }
# 4. Fiyati guncelleyip kaydetme
$gelen[3] = 2299.90;
$adb->modify_id("catalog_product", @gelen);Important
Sema Blok Indis Uyumu:
Semada tanimlanan indeks alanlari (match_block => [1, 2 ], search_block => [1 ], sort_block => [ 3 ], slug_block => [ 1, 2 ]), @kayit dizisinin 1-tabanli veri bloklarini gosterir. 1. Blok $kayit[1], 2. Blok $kayit[2] dir. 0. blok daima birincil anahtara ayrilmistir; arama veya filtre blogu olarak atanmamalidir.
Warning
Guncelleme Sirasinda ID Korunumu:
modify_id("tablo", @kayit) cagrilirken @kayit dizisinin 0. indisinde gercek kayit ID'sinin bulundugundan emin olunmalidir. ID alanina yanlislikla 0 yazilmasi kayit eslesme hatasina neden olur.
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