Skip to main content

Module plugin

Module plugin 

Source
Expand description

Plugin Architecture

SochDB uses a plugin architecture to keep the kernel minimal while allowing rich functionality through extensions.

§Design Philosophy

  1. Core is Minimal: The kernel contains only ACID-critical code
  2. Extensions Add Features: Storage backends, indices, observability are plugins
  3. No Bloat: Users only pay for what they use
  4. Vendor Neutral: No lock-in to specific monitoring/storage systems

§Plugin Categories

  • StorageExtension: Alternative storage backends (LSCS, RocksDB, etc.)
  • IndexExtension: Custom index types (vector, learned, etc.)
  • ObservabilityExtension: Metrics, tracing, logging backends
  • CompressionExtension: Compression algorithms

§Example: Adding Prometheus Metrics

// In a separate crate: sochdb-prometheus-plugin
struct PrometheusPlugin { /* ... */ }

impl ObservabilityExtension for PrometheusPlugin {
    fn record_metric(&self, name: &str, value: f64, tags: &[(&str, &str)]) {
        // Push to Prometheus
    }
}

// Usage:
let db = KernelDB::open(path)?;
db.plugins().register_observability(Box::new(PrometheusPlugin::new()))?;

Structs§

ExtensionInfo
Information about an extension
NullObservability
Null observability extension - does nothing
PluginManager
Plugin manager - registry for all extensions
StorageStats
Storage statistics

Enums§

ExtensionCapability
Capabilities an extension can provide

Traits§

CompressionExtension
Compression algorithm extension
Extension
Base trait for all extensions
IndexExtension
Index extension
ObservabilityExtension
Observability extension
StorageExtension
Storage backend extension