Files
Baradb/docs/ru/storage.md

2.2 KiB

Хранилища данных

BaraDB предоставляет несколько движков хранилища, оптимизированных для различных паттернов доступа.

LSM-Tree (Ключ-значение)

Основной движок хранилища с оптимизацией за запись и append-only структурой лога.

Использование

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 индекс

Упорядоченный индекс для диапазонных сканирований и точечных запросов.

Использование

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)

Обеспечивает долговечность операций записи.

import barabadb/storage/wal

var wal = newWAL("./wal")
wal.append("txn1", "SET key1 value1")
wal.flush()

Bloom Filter

Вероятностная структура данных для быстрых отрицательных проверок.

import barabadb/storage/bloom

var filter = newBloomFilter(10000, 0.01)
filter.add("key1")
if filter.mightContain("key1"):
  echo "возможно существует"

Memory-mapped I/O

Эффективный доступ к файлам через mmap.

import barabadb/storage/mmap

var mapped = mmapFile("./data/file.dat")
let data = mapped.read(0, 100)