Tags: lucaong/cubdb
Tags
Version v2.0.0-rc.1
Changes from `v1.1.0`:
- [breaking] The functions `CubDB.get_and_update/3`,
`CubDB.get_and_update_multi/3`, and `CubDB.select/2` now return directly
`result`, instead of a `{:ok, result}` tuple.
- [breaking] `CubDB.get_and_update_multi/4` does not take an option argument
anymore, making it `CubDB.get_and_update_multi/3`. The only available option
used to be `:timeout`, which is not supported anymore.
- [breaking] Remove the `:timeout` option on `CubDB.select/2`. This is part of
a refactoring and improvement that moves read operations from an internally
spawned `Task` to the client process. This makes the `:timeout` option
unnecessary: by stopping the process calling `CubDB`, any running read
operation by that process is stopped.
- [breaking] `CubDB.select/2` now returns a lazy stream that can be used with
functions in `Enum` and `Stream`. This makes the `:pipe` and `:reduce`
options unnecessary, so those options were removed.
- Add `CubDB.snapshot/2`, `CubDB.with_snapshot/1` and
`CubDB.release_snapshot/1` to get zero cost read-only snapshots of the
database. The functions in `CubDB.Snapshot` allow to read from a snapshot.
- Add `CubDB.transaction/2` to perform multiple write (and read) operations in
a single atomic transaction. The functions in `CubDB.Tx` allow to read and
write inside a transaction.
- Add `CubDB.back_up/2` to produce a database backup. The backup process does
not block readers or writers, and is isolated from concurrent writes.
- Add `CubDB.halt_compaction/1` to stop any running compaction operation
- Add `CubDB.compacting?/1` to check if a compaction is currently running
- Move read and write operations to the caller process as opposed to the
`CubDB` server process.
- Improve concurrency of read operations while writing
Version v1.0.0-rc.10 Changes: - [fix] Fix CubDB.cubdb_file?/1 regexp, making it stricter
Version v1.0.0-rc.9 Changes: - [fix] fix process (and file descriptor) leak upon compaction
Version v1.0.0-rc.8 Changes: - Remove default GenServer timeouts
Version v1.0.0-rc.7
Changes:
- `put_and_delete_multi` and `put_multi` have no caller timeout,
consistently with the other functions.
PreviousNext