Files
Baradb/docs/tr/architecture.md

5.0 KiB
Raw Permalink Blame History

BaraDB Mimarisi

Genel Bakış

BaraDB, Nim ile yazılmış bir çok modlu veritabanı motorudur — doküman (KV), grafik, vektör, kolonlu ve tam metin arama depolamasını BaraQL sorgu diliyle birleştirir.

Katmanlı Mimari

┌─────────────────────────────────────────────────────────┐
│ 1. İSTEMCİ KATMANI                                      │
│    İkili Protokol │ HTTP/REST │ WebSocket │ Gömülü      │
├─────────────────────────────────────────────────────────┤
│ 2. SORGU KATMANI (BaraQL)                               │
│    Lexer → Parser → AST → IR → Optimizör → Kod Üretimi  │
├─────────────────────────────────────────────────────────┤
│ 3. ÇALIŞTIRMA MOTORLARI                                │
│    Doküman │ Grafik │ Vektör │ Kolonlu │ FTS            │
├─────────────────────────────────────────────────────────┤
│ 4. DEPOLAMA                                             │
│    LSM-Tree │ B-Tree │ WAL │ Bloom │ Sıkıştırma │ Önbellek│
├─────────────────────────────────────────────────────────┤
│ 5. DAĞITIK                                               │
│    Raft Consensus │ Parçalama │ Çoğaltma │ Gossip        │
└─────────────────────────────────────────────────────────┘

Katman 1: İstemci Katmanı

  • İkili Protokol: Verimli big-endian ikili protokol
  • HTTP/REST: JSON tabanlı REST API
  • WebSocket: Tam çift yönlü akış
  • Gömülü: Süreç içi doğrudan erişim

Katman 2: Sorgu Katmanı (BaraQL)

  1. Lexer (query/lexer.nim): 80+ token tipi
  2. Parser (query/parser.nim): Recursive descent parser
  3. AST (query/ast.nim): 25+ node çeşidi
  4. IR (query/ir.nim): Ara temsil
  5. Optimizör (query/adaptive.nim): Çapraz modlu optimizasyon
  6. Kod Üretimi (query/codegen.nim): Depolama operasyonlarına çeviri
  7. Çalıştırıcı (query/executor.nim): Paralel yürütme

Katman 3: Çalıştırma Motorları

Doküman/KV Motoru

  • LSM-Tree (storage/lsm.nim): MemTable, WAL, SSTables

Vektör Motoru (vector/)

  • HNSW İndeksi (vector/engine.nim): Hiyerarşik Navigable Small World
  • IVF-PQ İndeksi: Ters dosya indeksi
  • SIMD İşlemleri (vector/simd.nim): AVX2-optimized

Grafik Motoru (graph/)

  • BFS, DFS, Dijkstra, PageRank
  • Louvain: Topluluk tespiti

Tam Metin Arama (fts/)

  • Ters indeks, BM25, TF-IDF
  • Çok Dilli: EN, BG, DE, FR, RU tokenizerları

Katman 4: Depolama

  • LSM-Tree: MemTable, WAL, SSTable, Bloom Filter
  • Sayfa Önbelleği: LRU önbellek
  • Hafıza-eşlenmiş I/O: mmap tabanlı erişim
  • Kurtarma: WAL yeniden oynatma

Katman 5: Dağıtık

  • Raft Consensus (core/raft.nim): Lider seçimi, log çoğaltma
  • Parçalama (core/sharding.nim): Hash, range, consistent hashing
  • Çoğaltma (core/replication.nim): Sync, async, semi-sync
  • Gossip Protokolü (core/gossip.nim): SWIM benzeri

Temel Tasarım Kararları

  1. Saf Nim: Cython, Python veya Rust bağımlılığı yok
  2. Birleşik Depolama: Tek motor KV, grafik, vektör, FTS ve kolonluyi yönetir
  3. Gömülü Mod: Kütüphane veya sunucu olarak çalışabilir
  4. İkili Protokol: Özel verimli kablo protokolü
  5. MVCC: Çok sürümlü eşzamanlılık kontrolü
  6. Şema-Önce: Kalıtım destekli güçlü tipli şema sistemi
  7. Çapraz Modlu: Tüm veri modellerinde tek sorgu dili
  8. Resmi Doğrulama: Temel dağıtık algoritmalar TLA+'da belirtilmiş ve TLC ile model kontrolü yapılmış

Modül İstatistikleri

Kategori Modüller Kod Satırı Amaç
Core 16 ~4,200 Sunucu, protokoller, işlemler, dağıtık
Storage 7 ~3,100 LSM, B-Tree, WAL, bloom, sıkıştırma, mmap
Query 7 ~2,800 Lexer, parser, AST, IR, optimizör, kod üretimi
Vector 3 ~1,200 HNSW, IVF-PQ, nicemleme, SIMD
Graph 3 ~1,000 Bitişik liste, algoritmalar, topluluk tespiti
FTS 2 ~900 Ters indeks, BM25, belirsiz, çok dilli
Protocol 7 ~2,400 Wire, HTTP, WebSocket, havuz, auth, hız sınırı
Schema 1 ~600 Tipler, bağlantılar, kalıtım
Client 2 ~800 Nim ikili istemcisi
CLI 1 ~400 İnteraktif BaraQL kabuğu
Toplam 49 ~14,100