darkbird 5.0.1

HighConcurrency, RealTime, InMemory storage inspired by erlang mnesia
Documentation

DarkBird

DarkBird is a document-oriented, real-time, in-memory database solution optimized for fast document retrieval.

Features

  • Database level: darkbird was storage, but from ( vsn 5.0.0 ) is full-featured database because provide Schema for building database and all operation do with database layer
  • Persistent: Uses a non-blocking write-ahead-logging engine for data persistence, storing data to multiple pages.
  • In-memory: Data is stored in memory, with two modes (DiskCopies, RamCopies), the first persisting data to disk and reloading the data into memory after restart.
  • Concurrency: Uses a high-concurrent HashMap (DashMap) and doesn't require Mutex/RwLock for thread synchronization.
  • Indexing: Supports indexing, allowing for dynamic decision-making about which document fields to index.
  • Full-text search: Supports full-text search operations since version 3.5.0.
  • Materialized view: Provides a trait for the document model (doc.filter(...)) that returns Some(view_name) or None when a document is inserted into the storage.
  • Tagging: Each document can have multiple tags, and one tag can refer to many documents, making it great for indexing groups of documents for fast retrieval by key.
  • Migration: The storage model is (Key, Document), and you can use migration::run to change the existing (Key, Document) data on disk before opening the storage.
  • External database support: Copy storage data to Postgres/Cassandra/Scylla and load from it.
  • Event handling: Subscribe to any channel to receive events.

Crate

darkbird = "5.0.1"

Examples

See the complete examples here.

Versions

  • 2.0.0: Improved performance and added persistent copy of whole data to a database.
  • 3.0.0: Implemented indexing, tagging, and range queries. Document model must implement tree trait from this version
  • 3.5.0: Added full-text search API (insert_content(document_key, content), remove_content(document_key, content), and search(...)).
  • 4.0.0: Added materialized view support. Document models must implement the MaterializedView trait, and API is provided to fetch view models. Uses &str instead of &String for better performance and API compatibility. All examples are updated.
  • 5.0.0: migrate from Storage to Database world with Schema builder and Database layer to do all operation also is compatible with older version

Future plans

  • Write comprehensive documentation to explain the architecture.
  • Add key expiry similar to Redis.
  • Distribution.