Expand description
§Sombra - High Performance Graph Database
Sombra is a fast, embedded graph database written in Rust with ACID transactions, WAL-based durability, and comprehensive indexing support.
§Quick Start
use sombra::{GraphDB, Node, Edge};
// Open a database (creates if it doesn't exist)
let mut db = GraphDB::open("my_graph.db")?;
// Start a transaction
let mut tx = db.begin_transaction()?;
// Create nodes
let alice = tx.add_node(Node::new(1))?;
let bob = tx.add_node(Node::new(2))?;
// Create an edge between nodes
let edge = Edge::new(1, alice, bob, "KNOWS");
tx.add_edge(edge)?;
// Commit the transaction
tx.commit()?;§Features
- ACID Transactions: Full atomicity, consistency, isolation, and durability
- WAL-based Durability: Write-Ahead Logging for crash recovery
- Multiple Index Types: B-tree indexes for fast lookups
- Property Indexes: Index nodes by property values
- Language Bindings: Python and Node.js support
- Configurable Sync Modes: Trade off performance vs. durability
- Health Monitoring: Built-in metrics and health checks
§Architecture
Sombra uses a layered architecture:
- Storage Layer: Page-based storage with checksums
- Pager Layer: Page caching and WAL management
- Database Layer: Graph operations and transactions
- API Layer: Public interface and language bindings
See the architecture documentation for more details.
Re-exports§
pub use crate::db::CompactionConfig;pub use crate::db::CompactionState;pub use crate::db::Config;pub use crate::db::GraphDB;pub use crate::db::IntegrityOptions;pub use crate::db::IntegrityReport;pub use crate::db::PerformanceMetrics;pub use crate::db::SyncMode;pub use crate::db::Transaction;pub use crate::db::TxId;pub use crate::db::TxState;pub use crate::error::GraphError;pub use crate::error::Result;pub use crate::model::Edge;pub use crate::model::EdgeDirection;pub use crate::model::EdgeId;pub use crate::model::Node;pub use crate::model::NodeId;pub use crate::model::PropertyValue;pub use crate::db::query::analytics::DegreeDistribution;pub use crate::db::query::analytics::DegreeType;pub use crate::db::query::builder::QueryBuilder;pub use crate::db::query::builder::QueryResult;pub use crate::db::query::pattern::EdgePattern;pub use crate::db::query::pattern::Match;pub use crate::db::query::pattern::NodePattern;pub use crate::db::query::pattern::Pattern;pub use crate::db::query::pattern::PropertyBound;pub use crate::db::query::pattern::PropertyFilters;pub use crate::db::query::pattern::PropertyRangeFilter;pub use crate::db::query::subgraph::Subgraph;