pub struct LsmEngine { /* private fields */ }Expand description
LSM engine with 256-way striping (Phase 1.6+)
Implementations§
Source§impl LsmEngine
impl LsmEngine
Sourcepub fn create_with_schema(
dir: impl AsRef<Path>,
schema: TableSchema,
) -> Result<Self>
pub fn create_with_schema( dir: impl AsRef<Path>, schema: TableSchema, ) -> Result<Self>
Create a new database with a table schema (Phase 3.1+)
Sourcepub fn create_with_config(
dir: impl AsRef<Path>,
config: DatabaseConfig,
schema: TableSchema,
) -> Result<Self>
pub fn create_with_config( dir: impl AsRef<Path>, config: DatabaseConfig, schema: TableSchema, ) -> Result<Self>
Create a new database with custom configuration (Phase 8+)
Sourcepub fn put_conditional(
&self,
key: Key,
item: Item,
condition: &Expr,
context: &ExpressionContext,
) -> Result<()>
pub fn put_conditional( &self, key: Key, item: Item, condition: &Expr, context: &ExpressionContext, ) -> Result<()>
Put an item with a condition expression (Phase 2.5+)
Sourcepub fn delete_conditional(
&self,
key: Key,
condition: &Expr,
context: &ExpressionContext,
) -> Result<()>
pub fn delete_conditional( &self, key: Key, condition: &Expr, context: &ExpressionContext, ) -> Result<()>
Delete an item with a condition expression (Phase 2.5+)
Sourcepub fn update(
&self,
key: &Key,
actions: &[UpdateAction],
context: &ExpressionContext,
) -> Result<Item>
pub fn update( &self, key: &Key, actions: &[UpdateAction], context: &ExpressionContext, ) -> Result<Item>
Update an item using update expression (Phase 2.4+)
Sourcepub fn update_conditional(
&self,
key: &Key,
actions: &[UpdateAction],
condition: &Expr,
context: &ExpressionContext,
) -> Result<Item>
pub fn update_conditional( &self, key: &Key, actions: &[UpdateAction], condition: &Expr, context: &ExpressionContext, ) -> Result<Item>
Update an item with a condition expression (Phase 2.5+)
Sourcepub fn query(&self, params: QueryParams) -> Result<QueryResult>
pub fn query(&self, params: QueryParams) -> Result<QueryResult>
Query items within a partition (Phase 2.1+)
Sourcepub fn batch_get(&self, keys: &[Key]) -> Result<HashMap<Key, Option<Item>>>
pub fn batch_get(&self, keys: &[Key]) -> Result<HashMap<Key, Option<Item>>>
Batch get multiple items (Phase 2.6+)
Sourcepub fn batch_write(&self, operations: &[(Key, Option<Item>)]) -> Result<usize>
pub fn batch_write(&self, operations: &[(Key, Option<Item>)]) -> Result<usize>
Batch write multiple items (Phase 2.6+)
Sourcepub fn transact_get(&self, keys: &[Key]) -> Result<Vec<Option<Item>>>
pub fn transact_get(&self, keys: &[Key]) -> Result<Vec<Option<Item>>>
Transaction get - read multiple items atomically (Phase 2.7+)
Sourcepub fn transact_write(
&self,
operations: &[(Key, TransactWriteOperation)],
context: &ExpressionContext,
) -> Result<usize>
pub fn transact_write( &self, operations: &[(Key, TransactWriteOperation)], context: &ExpressionContext, ) -> Result<usize>
Transaction write - write multiple items atomically with conditions (Phase 2.7+)
Sourcepub fn scan(&self, params: ScanParams) -> Result<ScanResult>
pub fn scan(&self, params: ScanParams) -> Result<ScanResult>
Scan all items across all stripes (Phase 2.2+)
Sourcepub fn read_stream(
&self,
after_sequence_number: Option<u64>,
) -> Result<Vec<StreamRecord>>
pub fn read_stream( &self, after_sequence_number: Option<u64>, ) -> Result<Vec<StreamRecord>>
Read stream records (Phase 3.4+)
Returns all stream records in the buffer, ordered by sequence number (oldest first). Optionally filter to only records with sequence number > after_sequence_number.
Sourcepub fn set_compaction_config(&self, config: CompactionConfig)
pub fn set_compaction_config(&self, config: CompactionConfig)
Set compaction configuration (Phase 1.7+)
§Examples
use kstone_core::{LsmEngine, CompactionConfig};
use tempfile::TempDir;
let dir = TempDir::new().unwrap();
let db = LsmEngine::create(dir.path()).unwrap();
// Disable compaction
db.set_compaction_config(CompactionConfig::disabled());
// Or customize compaction settings
let config = CompactionConfig::new()
.with_sst_threshold(5)
.with_check_interval(30);
db.set_compaction_config(config);Sourcepub fn compaction_config(&self) -> CompactionConfig
pub fn compaction_config(&self) -> CompactionConfig
Get current compaction configuration (Phase 1.7+)
Sourcepub fn compaction_stats(&self) -> CompactionStats
pub fn compaction_stats(&self) -> CompactionStats
Get compaction statistics (Phase 1.7+)
Returns a snapshot of current compaction statistics including:
- Total number of compactions performed
- SSTs merged and created
- Bytes read, written, and reclaimed
- Records deduplicated and tombstones removed
§Examples
use kstone_core::LsmEngine;
use tempfile::TempDir;
let dir = TempDir::new().unwrap();
let db = LsmEngine::create(dir.path()).unwrap();
// Get compaction statistics
let stats = db.compaction_stats();
println!("Total compactions: {}", stats.total_compactions);
println!("SSTs merged: {}", stats.total_ssts_merged);
println!("Bytes reclaimed: {}", stats.total_bytes_reclaimed);Sourcepub fn trigger_compaction(&self, stripe_id: usize) -> Result<()>
pub fn trigger_compaction(&self, stripe_id: usize) -> Result<()>
Trigger manual compaction on a specific stripe (Phase 1.7+)
This is primarily for testing or manual database maintenance. Compaction will only occur if the stripe has enough SSTs.