swaydb-java

Java wrapper for SwayDB

License

License

Categories

Categories

Java Languages
GroupId

GroupId

com.github.javadev
ArtifactId

ArtifactId

swaydb-java
Last Version

Last Version

0.9-alpha.2
Release Date

Release Date

Type

Type

jar
Description

Description

swaydb-java
Java wrapper for SwayDB
Project URL

Project URL

https://github.com/simerplaha/SwayDB.java
Source Code Management

Source Code Management

https://github.com/simerplaha/SwayDB.java

Download swaydb-java

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.javadev/swaydb-java/ -->
<dependency>
    <groupId>com.github.javadev</groupId>
    <artifactId>swaydb-java</artifactId>
    <version>0.9-alpha.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.javadev/swaydb-java/
implementation 'com.github.javadev:swaydb-java:0.9-alpha.2'
// https://jarcasting.com/artifacts/com.github.javadev/swaydb-java/
implementation ("com.github.javadev:swaydb-java:0.9-alpha.2")
'com.github.javadev:swaydb-java:jar:0.9-alpha.2'
<dependency org="com.github.javadev" name="swaydb-java" rev="0.9-alpha.2">
  <artifact name="swaydb-java" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.javadev', module='swaydb-java', version='0.9-alpha.2')
)
libraryDependencies += "com.github.javadev" % "swaydb-java" % "0.9-alpha.2"
[com.github.javadev/swaydb-java "0.9-alpha.2"]

Dependencies

compile (3)

Group / Artifact Type Version
io.swaydb : swaydb_2.11 jar 0.9-ALPHA.2
com.github.alexandrnikitin : bloom-filter_2.11 jar 0.11.0
org.apache.commons : commons-lang3 jar 3.9

test (3)

Group / Artifact Type Version
junit : junit jar 4.12
org.awaitility : awaitility jar 3.1.6
ch.qos.logback : logback-classic jar 1.2.3

Project Modules

There are no modules declared in this project.

SwayDB Slack Chat Gitter Chat Build status Maven central

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

We aim to be efficient at managing bytes on-disk and in-memory by recognising reoccurring patterns in serialised bytes without restricting the core implementation to any specific data model (SQL, NoSQL etc) or storage type (Disk or RAM). The core provides many configurations that can be manually tuned for custom use-cases, but we aim to eventually implement automatic runtime tuning when we are able to collect and analyse runtime machine statistics & read-write patterns.

Manage data by creating familiar typed data structures like Map, Set, Queue MultiMap, SetMap that can easily be converted to native Java and Scala collections.

Perform conditional updates/data modifications with 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 are configurable to be blocking, non-blocking and/or reactive.

Configurable 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

  • Simple data types - Map, Set, Queue, SetMap & MultiMap.
  • 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.

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.

The language in the LICENSE file follows GNU's FAQ.

Sponsors

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

Jetbrains support

Versions

Version
0.9-alpha.2
0.8.0
0.8-beta.8.8
0.8-beta.8.4
0.8-beta.8.3
0.7.1