Elixir embedded key/value database
:efbig
)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.
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.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.: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.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.CubDB.snapshot/2
, CubDB.with_snapshot/2
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.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.CubDB.back_up/2
to produce a database backup. The backup process does
not block readers or writers, and is isolated from concurrent writes.CubDB.halt_compaction/1
to stop any running compaction operationCubDB.compacting?/1
to check if a compaction is currently runningCubDB
server process.v1.1.0
See the CHANGELOG.md and the UPGRADING.md files for details.
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.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.: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.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.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.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.CubDB.back_up/2
to produce a database backup. The backup process does
not block readers or writers, and is isolated from concurrent writes.CubDB.halt_compaction/1
to stop any running compaction operationCubDB.compacting?/1
to check if a compaction is currently runningCubDB
server process.See the CHANGELOG for details on changes