11 releases
0.3.5 | Feb 18, 2022 |
---|---|
0.3.4 | May 10, 2021 |
0.3.3 | Mar 25, 2020 |
0.3.0 | Feb 24, 2020 |
0.1.1 | Feb 11, 2020 |
#10 in #data-channel
26 downloads per month
93KB
1.5K
SLoC
Kekbit
Mean and lean components for working with ultralight persistent data channels in rust. Channels could be used for communication, transaction journaling, live replication of an application state or as a backend for persisting software system images.
Basic Concepts
Persistent data channels
- A mechanism to sequentially persist data at a very fast rate
- They are writer bound - it is a writer which creates them and specify the particular structure of a channel such size, maximum record length, or timeout
- They have a fixed predefined capacity.
- Once a channel is closed, is full, or is abandoned it will never be used again for writing.
- They are byte-oriented sinks.
- They are backed by a file; using a RAM disk for storage such as tempfs or /dev/shm could provide blazing fast speeds.
- They always use little endian byte order.
Writers and Readers
- Writers are components which push data into a persistent channel. For each channel there is only one writer.
- Write operation can be done in stages using a chain of handlers.
- Readers are components which poll data from a channel. Data available in the channel could be consumed multiple times, sequential or in parallel by multiple readers.
- The default implementations for both readers and writers are non-blocking.
- Readers also offer a straight
Iterator
API.
Usage
Add this to your Cargo.toml
:
[dependencies]
kekbit = "0.3.4"
See the Examples for detailed usage.
Compatibility
The minimum supported Rust version is 1.31. Any change to this is considered a breaking change.
License
Licensed under MIT license (LICENSE or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.
Dependencies
~0.5–5.5MB
~15K SLoC