AmberDB

Ana Sayfa  •  Hakkında  •  Hızlı Başlangıç  •  Tutorial  •  Benchmark  •  Locale  •  SQL Rehberi  •  Changes  •  Wiki  •  English


CPAN version Perl Version License CI Documentation GitHub Repository

AmberDB, Perl için geliştirilmiş yüksek başarımlı, şema odaklı ve gömülü (embedded) bir NoSQL veritabanı motorudur. Berkeley DB (DB_File) üzerinde $O(1)$ 64-bit ikili indeksleme dilimleme, ACID işlem (transaction) garantisi (Strict 2PL), SQL JOIN darboğazı olmaksızın JSON benzeri iç içe dizi kayıtları, facet filtreleme ve akıllı sıcak/soğuk junk katman mimarisi sunar.


Dokümantasyon ve Kılavuzlar

Bölüm Açıklama Bağlantı
AmberDB Hakkında Mimari genel bakış, tasarım felsefesi, neden AmberDB ve temel yetenekler. AmberDB Hakkında Oku
Tutorial & Geliştirici Kılavuzu Tüm CRUD işlemleri, Şema mimarisi, ACID işlemler, İndeksleme, Arama motoru, Facet ve En İyi Pratikler. Geliştirici Kılavuzunu Aç
SQL Karşılaştırmalı Kullanım Rehberi SQL’den gelen geliştiriciler için “SQL’de şu şekilde, AmberDB’de bu şekilde” eşleştirmeleri, pratik kod örnekleri ve kopya kağıdı. SQL Rehberini Aç
Büyük Benchmark Raporu (600K Film) 600,000 gerçek IMDb kaydıyla AmberDB vs SQLite 3 derin sayfalama, arama, filtreleme ve nokta okuma karşılaştırması. Benchmark Raporunu Oku
AmberDB::Locale Rehberi Çok dilli (Global Base varsayılan 10 dil) metin işleme, yerelleştirme, evrensel aksan açılımları ve büyük/küçük harf dönüşümleri. Locale Rehberini Aç
Sürüm Notları (Changes) Sürüm geçmişi, son mimari güncellemeler ve değişiklik günlüğü. Değişiklikleri Gör
GitHub Wiki Metod bazlı API dokümantasyonu, mimari konseptler, bayraklar ve dosya formatları. Proje Wiki Sayfasını Aç
English Documentation English landing page, overview article, complete developer guide, and locale manual. Switch to English

Hızlı Başlangıç

1. Kurulum

AmberDB’yi CPAN üzerinden kurabilir veya kaynak koddan derleyebilirsiniz:

# cpanm ile (Önerilen)
cpanm AmberDB

# veya standart CPAN kabuğu ile
cpan AmberDB

veya GitHub kaynak kodundan derleyerek:

git clone https://github.com/marufcetin/amberdb.git
cd amberdb
perl Makefile.PL
make test
make install

2. Temel CRUD Kod Örneği

AmberDB’nin dizi tabanlı kayıt yapısını kullanan doğrulanmış temel CRUD örneği:

use strict;
use warnings;
use AmberDB;

# 1. Veritabanını Başlat
my $adb = AmberDB->new(
    cfg  => { user => 'admin', language => 'tr' },
    path => { dbase_dir => './dbstore' }
);

# 2. Kayıt Tanımlama (Dizi Tabanlı Belge Mimarisi)
my @product = (
    0,                          # [0] id (0: otomatik artan benzersiz ID)
    "Kablosuz Kulaklık",        # [1] name (ürün adı)
    149.99,                     # [2] price (fiyat)
    "Sony",                     # [3] brand (marka)
    "Elektronik",               # [4] category (kategori)
    { statu => "Satışta" }      # [5] nitelikler / meta veriler (hashref)
);

# 3. Kayıt Ekleme (Insert)
my $id = $product[0] = $adb->insert_id( "products", @product );

# 4. Kayıt Okuma (Read by ID)
my @from_db = $adb->read_id( "products", $id );
print "Ürün: $from_db[1], Fiyat: $from_db[2], Durum: $from_db[5]->{statu}\n";

# 5. Kayıt Güncelleme (Modify)
$product[2] = 129.99; # 2. bloktaki fiyatı güncelle
$adb->modify_id( "products", @product );

# 6. Tam Metin Arama (Full-Text Search)
my @results = $adb->search_table( "products", "sony kulaklık" );
foreach my $p (@results) {
    print "ID: $p->[0] | İsim: $p->[1] | Fiyat: $p->[2]\n";
}

# 7. Kayıt Silme (Delete)
$adb->delete_id( "products", $id );

Temel Mimari ve Yetenekler

1. JOIN İhtiyacı Olmayan Hiyerarşik Kayıtlar

Veriyi birden fazla ilişkisel tabloya bölüp okuma anında maliyetli SQL JOIN işlemleriyle birleştirmek yerine, AmberDB kayıtları doğal iç içe liste (array) ve sözlük (hash) biçiminde saklar. Bu yaklaşım Perl’in veri modeliyle birebir örtüşür ve maksimum okuma hızı sağlar.

2. 64-Bit Big-Endian İkili İndeksleme ($O(1)$)

Birincil ve ikincil indeksler sabit 8-byte Big-Endian paketlenmiş tamsayı tamponları (Q*) kullanır. Bu sayede milyonlarca kayıtta dahi $O(1)$ ikili dilimleme ve alt milisaniye seviyesinde sayfalama (pagination) elde edilir.

3. ACID İşlemler ve Strict 2PL Güvencesi

Disk tabanlı geri alma günlüğü (dbstore/journal/txn_*) ve Strict Two-Phase Locking (Strict 2PL) kilit yönetimi ile tam ACID desteği sunulur. Süreç çökmelerinde kurtarma adımı otomatik LIFO geri alma (rollback) uygular.

4. Yüksek Başarımlı Toplu (Batch) İşlemler

Toplu veri aktarımı metodları (insert_list, modify_list, delete_list), ana .db dosyasını tek seferde açıp indeksleri tek geçişte birleştirerek tek tek kayıt döngülerine kıyasla 50x-100x kat daha yüksek veri işleme hızı sunar.

5. Akıllı Sıcak / Soğuk Katmanlama (Junk Sistemi)

Canlı kayıtlar (.db) ile geçmiş/arşiv verileri (.jnk) birbirinden fiziksel olarak ayrıştırılır; tek sorguda hibrit olarak taranabilir (jnktype => 'A' | 'B' | 'AB' | 'BA').

6. Kolonik Facet Filtreleme Motoru

E-ticaret ve zengin ürün katalogları için bit düzeyinde küme kesişimleri ve çift yönlü sözlüklerle (.unq) harici bir arama sunucusuna ihtiyaç duymadan anlık kategori filtreleri üretir.


Mimari Karşılaştırma Tablosu

Özellik AmberDB SQLite Geleneksel RDBMS (PostgreSQL/MySQL)
Mimari Gömülü (Uygulama İçi Perl Objesi) Gömülü C Kütüphanesi Ayrı İstemci-Sunucu Servisi
Harici Bağımlılık Standart Perl (DB_File) C Kütüphanesi / DBI Sürücüsü Ayrı Sunucu, Ağ Protokolü, ORM
Kayıt Modeli Esnek Dizi (Array Döküman) İlişkisel Satır & Sütunlar İlişkisel Satır & Sütunlar
İlişkisel JOIN JOIN’siz İç İçe Kayıtlar SQL JOIN SQL JOIN
İndeks Mimarisi 64-bit Paketli İkili (Q*) B-Tree B-Tree / GiST / GIN
Tam Metin Arama Dahili (Aksan & Dil Uyumlu) SQLite FTS5 Modülü Dahili Arama / Harici (Elasticsearch)
Facet Filtreleme Dahili Kolonik Bitwise (.fac) Manuel Sorgular Manuel Sorgular / Harici Motor
ACID İşlemler Undo Journal + Strict 2PL WAL / Rollback Journal WAL / MVCC

Kaynaklar ve Topluluk