Description
SwayDB is a type-safe & non-blocking key-value storage library for single/multiple disks and in-memory storage.
It's an implementation of Log-structured merge-tree
written in Scala with asynchronous Leveled Compaction based on push-pull strategy built on the
Actor model.
It supports configurable Graph like
file format for faster reads and has compression support for both memory
& persistent databases.
Documentation: http://swaydb.io
SwayDB alternatives and similar packages
Based on the "Database" category.
Alternatively, view SwayDB alternatives based on common mentions on social networks and blogs.
-
Slick
Slick (Scala Language Integrated Connection Kit) is a modern database query and access library for Scala -
PostgreSQL and MySQL async
DISCONTINUED. Async database drivers to talk to PostgreSQL and MySQL in Scala. -
ScalikeJDBC
A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs. -
scala-redis
A scala library for connecting to a redis server, or a cluster of redis nodes using consistent hashing on the client side. -
scredis
Non-blocking, ultra-fast Scala Redis client built on top of Akka IO, used in production at Livestream -
Scruid
Scala + Druid: Scruid. A library that allows you to compose queries in Scala, and parse the result back into typesafe classes. -
lucene4s
Light-weight convenience wrapper around Lucene to simplify complex tasks and add Scala sugar. -
GCP Datastore Akka Persistence Plugin
akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode.
InfluxDB high-performance time series database

Do you think we are missing an alternative of SwayDB or a related project?
Popular Comparisons
README
SwayDB

Persistent and in-memory key-value storage engine for the JVM aimed at high performance & resource efficiency.
Small footprint: around 7.1 MB jar size. No external core dependency (#307).
Scalable on a single machine: Distribute data to multiple local SSDs. Allocate single or multiple Threads
for reads, caching & compaction.
Branches: This is the development
branch. See master
for
stable version.
Status: Under testing & performance optimisations. See project status.
Sponsors
Thank you JetBrains & JProfiler for full-featured open-source licences to their awesome development tools!
[Become a sponsor]
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 - Async & 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
Under testing & performance optimisations.
Your feedback and support is very important to get to production. Please get involved via chat, discussion, issues or by becoming a sponsor.
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.