-
Notifications
You must be signed in to change notification settings - Fork 0
TR Concept JOIN Free Architecture
Turkce Dokumantasyon | English Documentation
Kategori: Mimari Kavramlar ve Prensipler
Alt Sistem: Veri Modeli ve Sema Motoru (AmberDB::Base)
Madde Turu: Mimari Kavram
JOIN-Free Genisleyebilir Blok Mimarisi, AmberDB'nin iliskisel SQL sistemlerindeki pahali JOIN islemlerini, cok tablolu kilit cekismelerini ve kartezyen carpim yuklerini ortadan kaldirmak icin gelistirdigi temel veri modelleme yaklasimidir. Veriyi onlarca ayri yabanci anahtarli (foreign-key) ara tabloya bolmek yerine, bir nesneye ait tum hiyerarsik veriler tek bir kayit icinde genisleyebilir bloklar halinde tutulur.
Bire-cok ve coka-cok iliskiler; virgul veya ozel ayiracli iliskisel anahtar listeleri ("12,45,99"), cok boyutlu dizi referanslari ([[... ], [... ] ]) veya sozlukler ({ ... }) halinde dogrudan kayda gomulur. AmberDB indeksleme motoru, her kayit ekleme ve guncelleme isleminde bu iliskisel degerler icin ters indeks eslemelerini (.fld, .fac, .src) arka planda onceden hesaplar (precomputed inverted indexing).
Geleneksel SQL JOIN Modeli vs AmberDB JOIN-Free Modeli
Geleneksel SQL (Coklu Tablo JOIN Islemleri):
Urunler > UrunEtiket > Etiketler ==> Sorgu aninda pahali
cok tablolu JOIN'ler
> UrunResimler
AmberDB JOIN-Free Kayit Modeli:
Tekil Ana Dokuman (catalog_product.db)
[ID, Baslik, KategoriCSV, Fiyat, [EtiketlerDizisi], [VaryantAoA], {MetaHash} ]
Ekleme/Guncelleme Aninda Onceden Hesaplanir (Sorgu Zamani Maliyeti: SIFIR)
.inx (ID Map) .fld (Fields) .fac (Facets) .src (Search)
-
Sorgu Aninda Sifir JOIN Maliyeti: Tekil kayit cekme (
read_id) veya toplu okuma (read_list), onlarca disk aramasi (seek) yerine tek bir$O(1)$ erisimiyle nesneyi eksiksiz yukler. -
Onceden Hesaplanmis Ters Indeksler: Urun kaydina
"5,12"kategori kimlikleri yazildiginda, motor urunun ID'sini hem 5 hem de 12 numarali kategorinin ters indeks dosyasina (_2.fld) ekler. 5. kategorideki urunlerfield_fetchile sorgulandiginda$O(1)$ surede eslesen tum ID'ler aninda doner. - Kilit Zincirlerinin Engellenmesi: Bir kayit yazilirken yalnizca hedef tablo veya kayit kilitlenir; ara baglanti tablolarina dogru kilit yayilmasi (lock escalation) olusmaz.
- JSON ve REST API Uyumu: Kayitlar harici bir ORM katmanina gerek kalmadan dogrudan JSON ve API formatlarina birebir eslenir.
# 2. Blokta birden fazla kategori kimligi: "10,25,88"
my @urun = (0, "Oyuncu Bilgisayari", "10,25,88", 34500.00);
$adb->insert_id("catalog_product", @urun);
# Semadaki match_block => [2 ] ayari sayesinde 3 kategori de otomatik indekslenir.
# 25 numarali kategorideki urunler aninda taranir:
my @liste = $adb->field_fetch("catalog_product", 2, "25");# 1. Aktif siparisleri oku
my @siparisler = $adb->read_all("order_active");
# 2. Benzersiz musteri ID'lerini bellek icinde topla
my %musteri_idleri = map { $_->[2] => 1 } @siparisler;
# 3. read_list ile tum musterileri tek seferde sirali olarak cek
my @musteriler = $adb->read_list("customers", [keys %musteri_idleri ]);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