DarkBird is a Document oriented, high concurrency in-memory Storage, also persist data to disk to avoid loss any data
The darkbird provides the following:
-
Persistent - use Non-Blocking wal engine for persist data, also store data to multiple pages by total_page_size
-
In-memory - whole data stored in-memory with two mode ( DiskCopies , RamCopies ) both stored in-memory but DiskCopies persist data to disk and after restart, darkbird load whole data to memory
-
Concurrency - darkbird use one of best high-concurrent HashMap (DashMap)[https://github.com/xacrimon/conc-map-bench] and you don't need use Mutex/RwLock for sync between thread, storage is complete safe to shared between thread
-
Migration - Darkbird storage model is (Key, Document) if you want change Document Model, can use
migration::run
for change all (Key, Document) already exist in disk this module should be use before storage opened -
Event Handling - can subscribe any channel you want to storage, they get storage event (
RQuery<Key, Document>, Subscribed(tokio::mpsc::Sender(Event<key, document>))
)
Examples
The complete Examples on Link.
Crate
darkbird = "1.1.1"