c55d3080cf
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
Documentation updates: - Fix v0.1.0 → v1.1.0 version numbers in en, ru, fa, zh docs - Add missing Window Functions, Multi-Tenant ERP, Supported Keywords sections to ru, fa, zh baraql.md (~105 lines each) - Expand Turkish and Arabic baraql.md (110 → 268 lines) - Expand Turkish and Arabic installation.md (62 → 307 lines) - Add new Bulgarian documentation files (18 new files) Client updates: - Python: Full async/await rewrite with asyncio, request queueing - Rust: Full async/await rewrite with tokio, async examples - Nim: Update README to v1.1.0 - All clients now support async patterns consistently
79 lines
2.0 KiB
Markdown
79 lines
2.0 KiB
Markdown
# Storage Engines
|
||
|
||
BaraDB предоставя множество storage двигатели, оптимизирани за различни модели на достъп.
|
||
|
||
## LSM-Tree (Key-Value)
|
||
|
||
Основният storage engine с write-оптимизирана append-only лог структура.
|
||
|
||
### Употреба
|
||
|
||
```nim
|
||
import barabadb/storage/lsm
|
||
|
||
var db = newLSMTree("./data")
|
||
db.put("key1", cast[seq[byte]]("value1"))
|
||
let (found, value) = db.get("key1")
|
||
db.close()
|
||
```
|
||
|
||
### Компоненти
|
||
|
||
- **MemTable**: В-памет сортиран буфер
|
||
- **WAL**: Write-ahead log за устойчивост
|
||
- **SSTable**: Сортирани string таблици на диска
|
||
- **Bloom Filter**: Вероятностна проверка за принадлежност
|
||
- **Compaction**: Size-tiered стратегия с управление на нива
|
||
- **Page Cache**: LRU кеш с проследяване на hit rate
|
||
|
||
## B-Tree Индекс
|
||
|
||
Подреден индекс за range сканиране и точково търсене.
|
||
|
||
### Употреба
|
||
|
||
```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)
|
||
|
||
Осигурява устойчивост на операциите за запис.
|
||
|
||
```nim
|
||
import barabadb/storage/wal
|
||
|
||
var wal = newWAL("./wal")
|
||
wal.append("txn1", "SET key1 value1")
|
||
wal.flush()
|
||
```
|
||
|
||
## Bloom Filter
|
||
|
||
Вероятностна структура от данни за бързи негативни проверки.
|
||
|
||
```nim
|
||
import barabadb/storage/bloom
|
||
|
||
var filter = newBloomFilter(10000, 0.01)
|
||
filter.add("key1")
|
||
if filter.mightContain("key1"):
|
||
echo "евентуално съществува"
|
||
```
|
||
|
||
## Memory-mapped I/O
|
||
|
||
Ефективен достъп до файлове чрез mmap.
|
||
|
||
```nim
|
||
import barabadb/storage/mmap
|
||
|
||
var mapped = mmapFile("./data/file.dat")
|
||
let data = mapped.read(0, 100)
|
||
```
|