c95bc4cd44
- Add mcp.md to: bg, fa, ru, tr, zh, ar - Add index.md to Bulgarian (bg) - Add 24 missing German (de) documentation files Translations for all supported languages now complete.
79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
# Speicher-Engines
|
|
|
|
BaraDB bietet mehrere Speicher-Engines, optimiert für verschiedene Zugriffsmuster.
|
|
|
|
## LSM-Tree (Key-Value)
|
|
|
|
Die primäre Speicher-Engine mit write-optimierter Append-only Log-Struktur.
|
|
|
|
### Verwendung
|
|
|
|
```nim
|
|
import barabadb/storage/lsm
|
|
|
|
var db = newLSMTree("./data")
|
|
db.put("key1", cast[seq[byte]]("value1"))
|
|
let (found, value) = db.get("key1")
|
|
db.close()
|
|
```
|
|
|
|
### Komponenten
|
|
|
|
- **MemTable**: In-Memory sortierter Puffer
|
|
- **WAL**: Write-Ahead Log für Dauerhaftigkeit
|
|
- **SSTable**: Sortierte String-Tabellen auf Disk
|
|
- **Bloom-Filter**: Probabilistische Mengenmitgliedschaft
|
|
- **Compaction**: Size-tiered Strategie mit Level-Management
|
|
- **Page-Cache**: LRU-Cache mit Trefferraten-Verfolgung
|
|
|
|
## B-Tree Index
|
|
|
|
Geordneter Index für Bereichsabfragen und Point-Lookups.
|
|
|
|
### Verwendung
|
|
|
|
```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)
|
|
|
|
Sichert Dauerhaftigkeit von Schreiboperationen.
|
|
|
|
```nim
|
|
import barabadb/storage/wal
|
|
|
|
var wal = newWAL("./wal")
|
|
wal.append("txn1", "SET key1 value1")
|
|
wal.flush()
|
|
```
|
|
|
|
## Bloom-Filter
|
|
|
|
Probabilistische Datenstruktur für schnelle negative Lookups.
|
|
|
|
```nim
|
|
import barabadb/storage/bloom
|
|
|
|
var filter = newBloomFilter(10000, 0.01)
|
|
filter.add("key1")
|
|
if filter.mightContain("key1"):
|
|
echo "possibly exists"
|
|
```
|
|
|
|
## Memory-mapped I/O
|
|
|
|
Effizienter Dateizugriff mittels mmap.
|
|
|
|
```nim
|
|
import barabadb/storage/mmap
|
|
|
|
var mapped = mmapFile("./data/file.dat")
|
|
let data = mapped.read(0, 100)
|
|
```
|