67 lines
1.4 KiB
Markdown
67 lines
1.4 KiB
Markdown
# Depolama Motorları
|
||
|
||
BaraDB farklı erişim kalıpları için optimize edilmiş birden fazla depolama motoru sağlar.
|
||
|
||
## LSM-Tree (Anahtar-Değer)
|
||
|
||
Yazma için optimize edilmiş append-only log yapılı birincil depolama motoru.
|
||
|
||
### Kullanım
|
||
|
||
```nim
|
||
import barabadb/storage/lsm
|
||
|
||
var db = newLSMTree("./data")
|
||
db.put("key1", cast[seq[byte]]("value1"))
|
||
let (found, value) = db.get("key1")
|
||
db.close()
|
||
```
|
||
|
||
### Bileşenler
|
||
|
||
- **MemTable**: Bellek içi sıralı tampon
|
||
- **WAL**: Dayanıklılık için write-ahead log
|
||
- **SSTable**: Disk üzerinde sıralı string tabloları
|
||
- **Bloom Filter**: Hızlı negatif aramalar için olasılıksal yapı
|
||
- **Compaction**: Seviye yönetimi ile boyut katmanlı strateji
|
||
- **Page Cache**: Hit oranı izlemeli LRU önbellek
|
||
|
||
## B-Tree İndeksi
|
||
|
||
Aralık taramaları ve nokta aramaları için sıralı indeks.
|
||
|
||
### Kullanım
|
||
|
||
```nim
|
||
import barabadb/storage/btree
|
||
|
||
var btree = newBTreeIndex[string, string]()
|
||
btree.insert("key1", "value1")
|
||
let values = btree.get("key1")
|
||
let range = btree.scan("key_a", "key_z")
|
||
```
|
||
|
||
## Write-Ahead Log (WAL)
|
||
|
||
Yazma işlemlerinin dayanıklılığını sağlar.
|
||
|
||
```nim
|
||
import barabadb/storage/wal
|
||
|
||
var wal = newWAL("./wal")
|
||
wal.append("txn1", "SET key1 value1")
|
||
wal.flush()
|
||
```
|
||
|
||
## Bloom Filter
|
||
|
||
Hızlı negatif aramalar için olasılıksal veri yapısı.
|
||
|
||
```nim
|
||
import barabadb/storage/bloom
|
||
|
||
var filter = newBloomFilter(10000, 0.01)
|
||
filter.add("key1")
|
||
if filter.mightContain("key1"):
|
||
echo "muhtemelen var"
|
||
``` |