simerplaha / Swaydb
Programming Languages
Projects that are alternatives of or similar to Swaydb
SwayDB
Non-blocking persistent and in-memory key-value storage engine for the JVM with no external core dependencies (#307).
Small footprint: around 7.1 MB jar size.
Status: Under testing & performance optimisations. See project status.
Overview
- Simple data types -
Map
,Set
,Queue
,SetMap
&MultiMap
with native Java and Scala collections support. - Conditional updates using any pure JVM function - No query language.
- Atomic updates and inserts with
Transaction
API. - Non-blocking core with configurable APIs for blocking, non-blocking and/or reactive use-cases.
- Single or multiple disks persistent, in-memory or eventually persistent.
- Streams - Asnc & sync forward and reverse data streaming/iteration.
- TTL - non-blocking, non-polling asynchronous auto expiring key-values.
- Range operations to update, remove & expire a range of key-values.
- Key only iterations (Lazily fetched values).
- Configurable compression with LZ4 & Snappy
- Configurable core internals to support custom workloads.
- Duplicate values elimination with compressDuplicateValues.
Use cases
Highly configurable to suit different workloads. Some known use-cases are:
- General key-value storage
- Message queues
- Time-series or Events data
- Caching
- Application logs
- Archiving data or cold storage with high file level compression
Quick start
Contributing
Contributions are encouraged and welcomed. We are here to help and answer any questions.
Code of conduct - Be nice, welcoming, friendly & supportive of each other. Follow the Apache foundation's COC.
-
Contributing to data management API
-
Contributing to core API
- See issues labelled good first issue.
-
Contributing to core internals
- See code marked
TODO
. - Pick any small section to improve. You will find that everything is a function and can be unit-tested independently, so you can easily pick anything to work on.
- See code marked
Project status
Your feedback and review is very important to get to production. Please get involved via chat, issues or email which is on my profile.
Undergoing testing & performance optimisations. Future releases might not be backward compatible until we are production ready.
See tasks labelled Production release that are required before becoming production ready.
Related GitHub projects
- SwayDB.java.examples - Java examples demonstrating features and APIs.
- SwayDB.kotlin.examples - Kotlin examples demonstrating features and APIs.
- SwayDB.scala.examples - Scala examples demonstrating features and APIs.
- SwayDB.benchmark - Performance benchmarks.
- SwayDB.website - Website code.
Sponsors
Thank you Jetbrains for providing an open-source licence for their awesome development tools.