-
Notifications
You must be signed in to change notification settings - Fork 0
TR Concept 8 Byte Packed Binary Index
Turkce Dokumantasyon | English Documentation
Kategori: Mimari Kavramlar ve Prensipler
Alt Sistem: Indeksleme ve Depolama Motoru (AmberDB::Index)
Madde Turu: Mimari Kavram
8-Byte Paketli Binary Indeksleme Mekanizmasi, AmberDB'nin birincil kayit kimlik listeleri (.inx), onceden siralanmis sorgu matrisleri (.srt) ve soguk veri indeksleri (.jinx) icin kullandigi ozel ikili depolama bicimidir.
Kayit ID'lerini degisken uzunluklu metinler veya serilestirilmis diziler olarak saklamak yerine, Perl'in pack("Q*", @id_list) / pack("a8*", @id_list) mekanizmasi kullanilarak her bir ID kesinlikle 8-byte (64-bit) sabit genislikli ikili bayt blogu olarak paketlenir. Bu mimari, bellek icinde ve diskte sifir kopyalama ile alt-milisaniye duzeyinde
Fiziksel 8-Byte Paketli Binary Tampon Yapisi (.inx / .srt)
Bayt 0..7 Bayt 8..15 Bayt 16..23 Bayt 24..31 Bayt (N-1)*8..N*8
ID 1 (8-byte) ID 2 (8-byte) ID 3 (8-byte) ID 4 (8-byte) ID N (8-byte)
Sayfalama Ofseti: Baslangic = Sayfa * Limit * 8
Dilimleme: substr($tampon, $ofset, $limit * 8) ==> O(1) Hiz
1.000.000 kayit iceren devasa bir tabloda 50. sayfadaki (1000 ile 1020 arasindaki) 20 kaydi getirmek icin:
- Bayt ofseti aninda hesaplanir:
$ofset = 1000 * 8 = 8000. - Hedef dilim boyutu:
$uzunluk = 20 * 8 = 160bayt. - 160 baytlik veri
substr($binary_tampon, 8000, 160)ile$O(1)$ zamanda tek hamlede kesilir. - Kesilen 20 ID
unpack("Q*", $dilim)ile listeye cevrilir. Geriye kalan 999.980 kayit bellege hic yuklenmez.
read_all, field_fetch veya search_table metoduna keys_only => 1 parametresi gecildiginde, .db ana tablosundaki agir kayit govdesi cozulmez. Yalnizca filtreden gecen ID'ler dondurulur; bu sayede RAM tuketimi %95 oraninda duser.
| Metrik | Metin / JSON Dizisi | 8-Byte Paketli Binary (AmberDB) |
|---|---|---|
| 1 Milyon ID Disk Alani | ~15 MB - 25 MB | 8.0 MB (Tam sabit boyut) |
| Sayfalama Dilimleme Maliyeti |
|
|
| 100 ID Cozme Suresi | Agir JSON decode maliyeti | < 2 mikrosaniye |
| CPU Cache Verimi | Dusuk (Bellek dagilimi) | Yuksek (L1/L2 Cache Locality) |
# 1. Binary indeks optimizasyonu ile 2. sayfayi (20-40 arasi) okuma
my ($toplam_sayi, @sayfa_kayitlari) = $adb->read_all("catalog_product", 20, 20);
print "Katalogdaki Toplam Urun: $toplam_sayi\n";
# 2. keys_only ile salt-ID boru hatti (Hafif ve yuksek hizli)
my ($sayi, @urun_idleri) = $adb->read_all("catalog_product", 0, 50, keys_only => 1);
# Dönen liste: ($sayi, 1001, 1002, 1003, ...) - .db dosyasi okunmazAmberDB — 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