Releases: lucaong/cubdb
Releases · lucaong/cubdb
v2.0.2
v2.0.1
v2.0.0
Version 2.0.0
brings better concurrency, atomic transactions with arbitrary
operations, zero cost read-only snapshots, database backup, and more, all with a
simpler and more scalable internal architecture.
Refer to the upgrade guide for how to
upgrade from previous versions.
- [breaking] The functions
CubDB.get_and_update/3
,
CubDB.get_and_update_multi/3
, andCubDB.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 itCubDB.get_and_update_multi/3
. The only available option
used to be:timeout
, which is not supported anymore. - [breaking] Remove the
:timeout
option onCubDB.select/2
. This is part of
a refactoring and improvement that moves read operations from an internally
spawnedTask
to the client process. This makes the:timeout
option
unnecessary: by stopping the process callingCubDB
, any running read
operation by that process is stopped. - [breaking]
CubDB.select/2
now returns a lazy stream that can be used with
functions inEnum
andStream
. This makes the:pipe
and:reduce
options unnecessary, so those options were removed. - Add
CubDB.snapshot/2
,CubDB.with_snapshot/2
and
CubDB.release_snapshot/1
to get zero cost read-only snapshots of the
database. The functions inCubDB.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 inCubDB.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
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/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 itCubDB.get_and_update_multi/3
. The only available option
used to be:timeout
, which is not supported anymore. - [breaking] Remove the
:timeout
option onCubDB.select/2
. This is part of
a refactoring and improvement that moves read operations from an internally
spawnedTask
to the client process. This makes the:timeout
option
unnecessary: by stopping the process callingCubDB
, any running read
operation by that process is stopped. - [breaking]
CubDB.select/2
now returns a lazy stream that can be used with
functions inEnum
andStream
. 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 inCubDB.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 inCubDB.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
v1.1.0
v1.0.0
v1.0.0-rc.10
Changes
- [fix] Fix
CubDB.cubdb_file?/1
regexp, making it stricter
v1.0.0-rc.9
Changes:
- [fix] fix process (and file descriptor) leak upon compaction
v1.0.0-rc.8
Changes:
- Remove default GenServer timeouts
v1.0.0-rc.7
Changes:
put_and_delete_multi
andput_multi
have no caller timeout, consistently with the other functions.