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 2*F + 1, and no more than F nodes of the cluster are unreachable, the cluster will continue working as normal. If more than F nodes become unreachable, a transaction may block, unable to complete, or may be rejected, but there will be no divergence between nodes.

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.




More Information


Related Articles

Cassandra 2.0 Available

CockroachDB Released

RocksDB On Steroids

Asterix DB - Big Data Management System

To be informed about new articles on I Programmer, sign up for our weekly newsletter,subscribe to the RSS feed and follow us on, Twitter, FacebookGoogle+ or Linkedin


Microsoft Releases Playwright Test Runner

Microsoft has released a preview version of Playwright Test Runner, a zero config cross-browser tool providing end-to-end testing for web apps. Features include browser automation for Playwright, Jest [ ... ]

MongoDB Trends

A report that looks at trends in the usage of MongoDB alongside  SQL and other NoSQL database technologies, reveals a decline in SQL-only technologies at the same time as the adoption of&nbs [ ... ]

More News





or email your comment to: comments@i-programmer.info

Last Updated ( Thursday, 31 December 2015 )