Cubdb Versions Save

Elixir embedded key/value database

v2.0.2

1 year ago

Changes:

  • [fix] Better exception in case of file errors (such as :efbig)

v2.0.1

1 year ago

Changes:

  • Avoid unnecessary commits in the compaction catching up phase
  • More informative error when running out of disk space
  • Avoid leaking processes when stopping CubDB during a compaction

v2.0.0

1 year ago

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, 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/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.
  • 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

v2.0.0-rc.1

1 year ago

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, 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

v1.1.0

2 years ago

Changes:

  • Add clear/1 function to atomically delete all entries in the database

v1.0.0

2 years ago

See the CHANGELOG for details on changes

v1.0.0-rc.10

3 years ago

Changes

  • [fix] Fix CubDB.cubdb_file?/1 regexp, making it stricter

v1.0.0-rc.9

3 years ago

Changes:

  • [fix] fix process (and file descriptor) leak upon compaction

v1.0.0-rc.8

3 years ago

Changes:

  • Remove default GenServer timeouts

v1.0.0-rc.7

3 years ago

Changes:

  • put_and_delete_multi and put_multi have no caller timeout, consistently with the other functions.