Files
Baradb/docs/fa/storage.md

1.9 KiB

موتورهای ذخیره‌سازی

BaraDB چندین موتور ذخیره‌سازی بهینه‌شده برای الگوهای دسترسی مختلف فراهم می‌کند.

LSM-Tree (کلید-مقدار)

موتور ذخیره‌سازی اصلی با ساختار log-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: log جلوگیری از نوشتن برای دوام
  • SSTable: جداول رشته‌ای مرتب روی دیسک
  • Bloom Filter: ساختار احتمالی برای جستجوهای منفی سریع
  • Compaction: استراتژی size-tiered با مدیریت سطح
  • Page Cache: کش LRU با ردیابی نرخ hit

اندیس 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 "احتمالاً وجود دارد"

I/O نگاشته‌شده به حافظه

دسترسی کارآمد به فایل با استفاده از mmap.

import barabadb/storage/mmap

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