Files
Baradb/docs/ru/storage.md
T

78 lines
2.2 KiB
Markdown

# Хранилища данных
BaraDB предоставляет несколько движков хранилища, оптимизированных для различных паттернов доступа.
## LSM-Tree (Ключ-значение)
Основной движок хранилища с оптимизацией за запись и 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**: Отсортированные строковые таблицы на диске
- **Bloom Filter**: Вероятностная структура для быстрых отрицательных проверок
- **Compaction**: Size-tiered стратегия с управлением уровней
- **Page Cache**: LRU кэш с отслеживанием hit rate
## B-Tree индекс
Упорядоченный индекс для диапазонных сканирований и точечных запросов.
### Использование
```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)
```