SwayDB
SwayDB copied to clipboard
Persistent and in-memory key-value storage engine for JVM that scales on a single machine.
Since each [Level](http://swaydb.io/implementation/level/?language=scala) can have the same configuration there should a flag that configures last level's compaction to not re-create a [Segment](http://swaydb.io/implementation/segment/?language=scala) that was copied from upper levels.
This task is at API level only. Understanding core internals is not required. To test stability currently there are two apps that stress test SwayDB's API. - [Weather data simulation](https://github.com/simerplaha/SwayDB/blob/master/swaydb-stress/src/test/scala/swaydb/weather/WeatherDataSpec.scala)...
Java configuration functions are mutable. For example the following `setClearAppliedFunctionsOnBoot` function is mutable. This function and others should be immutable. ```java Map products = PersistentMap .functionsOn(Paths.get("my_dir"), stringSerializer(), doubleSerializer(), Arrays.asList(discount)) .setClearAppliedFunctionsOnBoot(true)...
Currently we do not have a strategy to reduce write amplification when handling random updates that spans over multiple Segments. Need to test the following approaches 1. Creating temporary levels...
Smaller [Segments](http://swaydb.io/implementation/segment/?language=java) (segments that are < [minSegmentSize](minSegmentSize)) get collapsed in the last level to create larger Segments. Currently a merge is executed which has memory and read overhead which is...
- Recovering [LevelZero](http://swaydb.io/implementation/meters/levelZeroMeter/?language=java) map entries could be faster by avoiding flushes. - Compaction shutdown can be faster by ignore pending compaction tasks.
More compaction tests are required to get coverage compaction behaviour.
We can very easily spawn multiple database instances like following ```scala val map1 = swaydb.persistent.Map[Int, String, Nothing, Bag.Less]("myMap1") val map2 = swaydb.persistent.Map[Int, String, Nothing, Bag.Less]("myMap2") val set = swaydb.persistent.Set[String, Nothing,...
Back up all databases files to target path. ```scala db.backup(path: Path) ```
SwayDB does not have any external dependencies other than compression libraries (LZ4 and Snappy) which are optionally enabled. Majority of the effects are implemented in `Effect.scala`. May be moving all...