aurora-db

Crates.ioaurora-db
lib.rsaurora-db
version0.2.1
created_at2025-03-17 06:47:31.591901+00
updated_at2025-07-03 12:54:40.578732+00
descriptionA hybrid embedded document database with key-value storage, document collections, and optional network servers.
homepagehttps://github.com/bethel-nz/aurora
repositoryhttps://github.com/bethel-nz/aurora
max_upload_size
id1595132
size292,207
ren. (Bethel-nz)

documentation

README

Aurora DB

A hybrid embedded document database with key-value storage and document collections.

Features

  • Hybrid Storage: In-memory cache + persistent disk storage
  • Document Collections: Schema-flexible JSON-like documents
  • Advanced Queries: Rich filtering, sorting and indexing
  • Blob Storage: Efficient handling of binary objects
  • Async API: High-performance operations with async/await support
  • Durability: Write-ahead logging for crash recovery
  • Network Support: Optional HTTP JSON and high-performance binary servers

Library Usage

To use Aurora DB as an embedded library in your Rust project, add it to your Cargo.toml:

[dependencies]
aurora_db = "0.1.0"
tokio = { version = "1", features = ["full"] }

Basic Example

use aurora_db::{Aurora, FieldType, Value};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Open database in a temporary directory
    let db = Aurora::open("my_database")?;

    // Create a new collection for users
    db.new_collection("users", vec![
        ("name", FieldType::String, false),
        ("email", FieldType::String, true), // unique field
        ("age", FieldType::Int, false),
    ])?;

    // Insert a document
    db.insert_into("users", vec![
        ("name", Value::from("Jane Doe")),
        ("email", Value::from("jane@example.com")),
        ("age", Value::from(28)),
    ])?;

    // Query for users older than 25
    let users = db.query("users")
        .filter(|f| f.gt("age", 25))
        .collect()
        .await?;

    println!("Found {} user(s).", users.len());
    // -> Found 1 user(s).

    Ok(())
}

Running as a Server

Aurora DB can also run as a standalone server, accessible over the network. The server is provided as a separate binary within the crate, enabled by feature flags.

Server Features

  • http: Enables the Actix-powered HTTP/JSON REST API.
  • binary: Enables the high-performance Bincode-based TCP server.
  • full: Enables both servers.

Running the Server

To run the server binary, use the --features flag with Cargo:

# Run the HTTP server on port 7879
cargo run --bin aurora-db --features http

# Run the binary server on port 7878
cargo run --bin aurora-db --features binary

# Run both servers simultaneously
cargo run --bin aurora-db --features full

Documentation

See the docs directory for detailed guides on CRUD operations, querying, and schema management.

Performance

Aurora DB delivers fast performance across various operations:

Operation 'Database initialization' took: 103.54ms
Operation 'Basic KV operations' took: 307.40µs
Operation 'Collection setup' took: 3.25ms
Operation 'Query books by Author' took: 759.70µs

Status

Currently in beta. Core functionality is stable and actively developed.

License

MIT License

Commit count: 31

cargo fmt