Fast embeddable persistent and in-memory key-value storage engine that provides storage
as simple data structures - Map
, Set
& Queue
.
Conditional updates/data modifications can be performed by simply submitting any Java, Scala, Kotlin or any native JVM code.
SwayDB's configurations can be tuned for various workloads. Some use-cases are:
- General key-value storage
- Message queues
- Time-series or Events data
- Application logs
- Archiving data or cold storage with high file level compression
See comparable benchmarks with RocksDB or QuickStart in Java, Scala or Kotlin.
Documentation | License summary | Project status
Storage type | Performance |
---|---|
Persistent | up to 863,000 reads/sec & 482,000 writes/sec |
Memory | TODO |
- Simple data types -
Map[K, V]
,Set[A]
&Queue[A]
. - Java, Scala & Kotlin.
- Single or multiple disks persistent, in-memory or periodically persistent.
- Streaming.
- Atomic updates and inserts with transactions.
- Custom updates using any JVM function.
- TTL - auto expiring key-values.
- Range update, remove & expire.
- Non-blocking with customisable non-blocking or blocking APIs.
- Key only iterations (Lazily fetched values).
- Configurable compression with LZ4 & Snappy
- Configurable core internals.
- Duplicate values can be eliminated with compressDuplicateValues.
- A small type-safe Actor implementation.
- IO type for type-safe error handling.
Your feedback and review is very important to get to production. Please get involved via chat, issues or email which is on my profile.
See tasks labelled Production release that are required before becoming production ready.
- 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.
Contributions are welcomed following the Scala code of conduct.
Would like to see others find SwayDB useful in their own projects, companies and other open-source projects for both personal or commercial reasons, the license only asks for your modifications (e.g bug-fixes) to SwayDB's source code to be shared so that it supports the contributors by not duplicating efforts. You do not have to share your program's code or are bounded by AGPLv3 as long as you share your modifications.
If you have any questions or think that the current license restricts you in any way please get in touch.
The language in the LICENSE file follows GNU's FAQ so that it is correct in legal terms.
Thank you Jetbrains for providing an open-source licence for their awesome development tools.