|Written by Kay Ewbank|
|Thursday, 31 December 2015|
A new database that's a distributed, transactional, fault-tolerant object store has been released. GoshawkDB stores data as persistent objects, and its creator avoids the term database to describe it.
The big attraction is the promise that GoshawkDB supports full multi-object transactions which are atomic and isolated no matter how many objects the transaction touches or where the objects are stored. GoshawkDB clients also support nested transactions, and features such as Retry are supported.
Transactions with strong-serializability isolation levels are the only ones supported. Writing about the transaction support on the GoshawkDB website, developer Matthew Sackman said that while many data stores offer eventual consistency, they present problems if failures occur. Sackman says that GoshawkDB is different:
"it supports full transactions which are atomic no matter how many objects they touch. Transactions have many nice properties and using full transactions makes your code simpler and easier to write and maintain. GoshawkDB's transactions are also durable: the client is not informed of the result of the transaction until after the result has been written and flushed to disk."
GoshawkDB also makes clear guarantees about how it will behave in the presence of failures. Specifically, you can set a failure parameter (F), which sets the number of failures you want GoshawkDB to tolerate. So long as the minimum cluster size is
Sackman says GoshawkDB is a CP-system, using the CAP theorem's terminology for a database that will be able to recover from failures (including network partitions) and will not violate consistency. The data store only orders transactions where necessary, so avoiding imposing a global total order of transactions to improve performance. The claim is that for an unchanging workload, GoshawkDB's performance will not decrease as you add more nodes, and can increase.
GoshawkDB doesn't make you use schemas. It treats object values as plain byte arrays, and the only requirement is that you declare pointers to other objects explicitly. Overall, it looks a useful addition to the object store options such as Cassandra, Riak and CockroachDB, and it will be interesting to see whether it achieves popularity.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Thursday, 31 December 2015 )|