FoundationDB Alpha 5
A new backup system allows scheduled backups of a snapshot of the FoundationDB database to an external filesystem.
Snapshot reads allow API clients to selectively relax FoundationDB’s strong isolation guarantee. Appropriate use can of them can reduce Conflict ranges but makes reasoning about concurrency harder.
Streaming modes allow API clients to adjust how FoundationDB transfers data for range reads for improved performance.
Client APIs automatically detect the appropriate network interface (local address) when connecting to a cluster, and will look for a Default cluster file.
Tuples encoded with prior alpha versions are incompatible with the tuple layer in Alpha 5.
Databases created with Alpha 4 will be compatible. (See Upgrading from older versions for upgrade instructions)
Databases created before Alpha 4 will be incompatible. (See Upgrading from older versions for details)
Changes to all APIs
The API version has been updated to 14.
Snapshot reads (see Features, above).
Streaming modes (see Features, above).
Automatic network interface detection (see Features, above).
The tuple layer supports unicode strings (encoded as UTF-8), has a more compact encoding, and is not compatible with data from prior versions.
Reversed range reads are now exposed through a separate parameter rather than via a negative
Extensible options are now exposed at the network, cluster, database and transaction levels. The parameters to
fdb.init()have been replaced by network options.
Option enumerations are available in a machine-readable format for the benefit of third-party language binding developers.
Python API changes
fdb.open()can be called with no parameters to use the Default cluster file.
Waiting on a Future object has changed from
Reversed range reads can by specified by passing a slice object with a -1 step.
The convenience read methods on
fdb.Databaseare now transactional.
C API changes
Byte limits exposed in
fdb_transaction_get_range(). These are not currently exposed by any of the higher level clients (and usually streaming modes should be preferred).
fdb_future_get_keyvalue_array()returns an explicit flag indicating whether there is more data in the range beyond the limits passed to
fdb_transaction_get_range_selectorhas been eliminated -
fdb_transaction_get_range()always takes key selectors.