Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Rustixir/darkbird
In-memory database inspired by erlang mnesia
https://github.com/Rustixir/darkbird
Last synced: about 1 month ago
JSON representation
In-memory database inspired by erlang mnesia
- Host: GitHub
- URL: https://github.com/Rustixir/darkbird
- Owner: Rustixir
- License: mpl-2.0
- Created: 2022-04-30T15:36:57.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-14T19:55:34.000Z (8 months ago)
- Last Synced: 2024-04-24T05:34:47.290Z (8 months ago)
- Language: Rust
- Homepage:
- Size: 246 KB
- Stars: 403
- Watchers: 7
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust - darkbird - HighConcurrency, RealTime, InMemory storage inspired by erlang mnesia (Applications / Database)
- awesome-rust - darkbird - HighConcurrency, RealTime, InMemory storage inspired by erlang mnesia (Applications / Database)
- fucking-awesome-rust - darkbird - HighConcurrency, RealTime, InMemory storage inspired by erlang mnesia (Applications / Database)
- fucking-awesome-rust - darkbird - HighConcurrency, RealTime, InMemory storage inspired by erlang mnesia (Applications / Database)
README
![DarkBird](https://github.com/Rustixir/darkbird/blob/main/darkbird.png)
DarkBird is a _document-oriented_, _in-memory_ database solution optimized for **fast real-time data searches**.
## Features
- **Database level**: darkbird was storage, but from ( vsn 5.0.3 ) 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_](https://github.com/xacrimon/conc-map-bench)) and doesn't require Mutex/RwLock for thread synchronization.
- **Vector**: darkbird provide a vector engine for storing and searching vectors
- **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**: Supports materialized view
- **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.
- **Expiration**: from vsn 6.0.0 support key expiry.
- **Atomic Operation**: from vsn 6.0.0 support Atomic Operation (just like redis setNx)
- **Migration**: The storage model is (Key, Document), and you can use `migration` to change the existing (Key, Document) data on disk before opening the storage.
- **Backup / Restore** from vsn-6.1.0 support Backup/Restore
- **External database support**: Supports Copy storage data to Postgres/Cassandra/Scylla and load from it.
- **Event handling**: Subscribe to darkbird reporter to receive events.## Crate
```
darkbird = "6.2.4"
```## Examples
- See the complete examples [here](https://github.com/Rustixir/darkbird/tree/main/example).
- This repo is Movies store service with (darkbird + actix-web) [here](https://github.com/Rustixir/darkapp/).## 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
- **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.1**: migrated from Storage to Database world with Schema builder
and Database layer to do all operation also is compatible with older version
- **5.0.2**: fixedbug persist indexing and changed fullText search api for a bug
all examples updates
- **5.0.3**: fixedbug loader
- **6.0.0**: added another storage Engine for supporting:
atomic operation (just like redis setNx), expiration and simpler api
- **6.0.1**: Backup/Restore _ new migration component (recover self if occure error)
- **6.2.0**: Vector Engine