GoshawkDB
discontinuedby Matthew Sackman · since 2015
Distributed object-graph store with strictly serializable multi-object transactions; dormant since 2016.
discontinued. No releases or commits since 0.3.1 (November 2016); the project is effectively abandoned.
Overview
GoshawkDB was a distributed, fault-tolerant object store written in Go by Matthew Sackman. Data is a graph of objects whose values are opaque byte arrays with explicit pointers to other objects; clients submit multi-object transactions that the cluster commits only at strict serializability, using the Paxos Synod protocol among the replicas of every object touched, with no leader node. Objects are sharded so each lives on a majority subset of nodes, commits are flushed to disk before clients are told, and Go and Java clients support nested transactions and automatic retry. Version 0.3 added multiple roots and object capabilities. The 0.3.1 release of November 2016 was the last.
Strengths & trade-offs
Strengths
- +Strictly serializable transactions across any set of objects
- +Leaderless Paxos-based commit avoids a single coordinator
- +Clean, well-documented design that is easy to study
Trade-offs
- −Abandoned since 2016 at a pre-1.0 version
- −No query language or secondary indexes
- −AGPL server license
Great for
- +Studying leaderless serializable transaction protocols
- +Prototyping object-graph persistence
Think twice for
- −Production systems
- −Query-heavy applications
Capabilities
Native or official first-party support · 3 of 25 tracked
Scale & consistency
- Comfortable data size
- Small · ≤ 100 GB
- Horizontal scaling
- Native
- Multi-region
- No
- Transactions
- Full ACID
- Consistency
- Strong
- Schema
- Schemaless
- Architecture
- Distributed
- Query languages
- Client object API
Objects are sharded across nodes and replicated to a configurable majority.
Deployment
Ecosystem
Alternatives to GoshawkDB
Apple's ordered, strictly serializable distributed key-value store, built to have layers on top.
goshawkdb vs foundationdb →Postgres-wire distributed SQL built to survive node, zone and region failures with serializable transactions.
goshawkdb vs cockroachdb →CNCF-graduated, Raft-replicated transactional key-value store in Rust; the storage layer of TiDB.
goshawkdb vs tikv →Raft-based, strongly consistent key-value store that holds Kubernetes' cluster state.
goshawkdb vs etcd →Smalltalk object database where application code runs inside the transactional object repository.
goshawkdb vs gemstone-s →New Zealand's integrated object database, language and app server for building line-of-business systems.
goshawkdb vs jade →GoshawkDB FAQ
What is GoshawkDB?
GoshawkDB is an object database by Matthew Sackman, first released in 2015. GoshawkDB was a distributed, fault-tolerant object store written in Go by Matthew Sackman. Data is a graph of objects whose values are opaque byte arrays with explicit pointers to other objects; clients submit multi-object transactions that the cluster commits only at strict serializability, using the Paxos Synod protocol among the replicas of every object touched, with no leader node. Objects are sharded so each lives on a majority subset of nodes, commits are flushed to disk before clients are told, and Go and Java clients support nested transactions and automatic retry. Version 0.3 added multiple roots and object capabilities. The 0.3.1 release of November 2016 was the last.
Is GoshawkDB open source?
Yes. GoshawkDB is open source. License: GNU AGPL v3 (server); Apache 2.0 (clients).
Does GoshawkDB support ACID transactions?
Yes. GoshawkDB supports full ACID transactions, with strong consistency.
Does GoshawkDB scale horizontally?
GoshawkDB scales horizontally out of the box, with built-in sharding or partitioning. It is comfortable at small scale (≤ 100 GB).
How can I run GoshawkDB?
You can self-host it.
What is GoshawkDB best for?
GoshawkDB is a strong fit for studying leaderless serializable transaction protocols and prototyping object-graph persistence. Think twice for production systems.
What are the best alternatives to GoshawkDB?
Common alternatives to GoshawkDB include FoundationDB, CockroachDB, TiKV, etcd and GemStone/S. The right choice depends on your workload, scale and hosting; WhichDB's smart match ranks them against your requirements.
Is GoshawkDB still maintained?
GoshawkDB is discontinued. No releases or commits since 0.3.1 (November 2016); the project is effectively abandoned.
How popular is GoshawkDB?
GoshawkDB ranks #648 of 844 databases on the WhichDB Score (0.4/100), and #23 among object databases. The score combines public adoption signals such as package downloads, GitHub activity, job posts and developer discussion.