Improved
v2.0.0-rc.1
Changes from v1.1.0
See the CHANGELOG.md and the UPGRADING.md files for details.
- [breaking] The functions
CubDB.get_and_update/3,CubDB.get_and_update_multi/3, andCubDB.select/2now return directlyresult, instead of a{:ok, result}tuple. - [breaking]
CubDB.get_and_update_multi/4does not take an option argument anymore, making itCubDB.get_and_update_multi/3. The only available option used to be:timeout, which is not supported anymore. - [breaking] Remove the
:timeoutoption onCubDB.select/2. This is part of a refactoring and improvement that moves read operations from an internally spawnedTaskto the client process. This makes the:timeoutoption unnecessary: by stopping the process callingCubDB, any running read operation by that process is stopped. - [breaking]
CubDB.select/2now returns a lazy stream that can be used with functions inEnumandStream. This makes the:pipeand:reduceoptions unnecessary, so those options were removed. - Add
CubDB.snapshot/2,CubDB.with_snapshot/1andCubDB.release_snapshot/1to get zero cost read-only snapshots of the database. The functions inCubDB.Snapshotallow to read from a snapshot. - Add
CubDB.transaction/2to perform multiple write (and read) operations in a single atomic transaction. The functions inCubDB.Txallow to read and write inside a transaction. - Add
CubDB.back_up/2to produce a database backup. The backup process does not block readers or writers, and is isolated from concurrent writes. - Add
CubDB.halt_compaction/1to stop any running compaction operation - Add
CubDB.compacting?/1to check if a compaction is currently running - Move read and write operations to the caller process as opposed to the
CubDBserver process. - Improve concurrency of read operations while writing