simerplaha / swaydb

Fast embeddable persistent & in-memory key-value storage engine - www.SwayDB.io

GitHub

SwayDB Slack Chat Gitter Chat Build status Maven central

Embeddable persistent and in-memory key-value storage engine aimed for high performance & resource efficiency.

Data is managed by creating simple data structures like Map, Set, Queue, SetMap & MultiMap.

Conditional updates/data modifications can be performed by simply submitting any Java, Scala, Kotlin or any native JVM code - No query language.

Scalable on a single machine - Data can be stored on multiple local HDD/SSD and, single or multiple Threads can be allocated for reads, caching & compaction.

SwayDB's core is non-blocking but the APIs can be configured to be blocking, non-blocking and/or reactive.

Configurations can be tuned to suit different workloads. Some 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

See comparable benchmarks with RocksDB or QuickStart in Java, Scala or Kotlin.

Documentation | License summary | Project status

Performance

Storage type Performance
Persistent up to 863,000 reads/sec & 482,000 writes/sec
Memory TODO

Overview

Read more.

Quick start

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.

See tasks labelled Production release that are required before becoming production ready.

Related GitHub projects

Contribution

Contributions are welcomed following the Scala code of conduct.

License summary

We would like to see others find SwayDB useful in their own projects, companies and other open-source projects for both personal and 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 and shares knowledge on this project's subject. 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.

Sponsors

Thank you Jetbrains for providing an open-source licence for their awesome development tools.

Jetbrains support