GoshawkDB

discontinued

by Matthew Sackman · since 2015

Distributed object-graph store with strictly serializable multi-object transactions; dormant since 2016.

objectgraphkey-valuedatabase engineopen source (copyleft)legacy

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

✓Transactions
✓Durable persistence
✓Role-based access
–Joins
–Secondary indexes
–Full-text search
–Vector search
–Geospatial
–JSON
–Change data capture
–Triggers
–Stored procedures
–Materialized views
–TTL / expiry
–Pub/Sub
–Columnar storage
–In-memory
–Compression
–Encryption at rest
–Time travel
–Branching
–Online schema changes
–Streaming ingest
–Offline sync
–Runs in WebAssembly

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

Self-hosted Vendor-managed cloud Serverless Embedded Edge Kubernetes operator

Ecosystem

apis & protocolsGo client, Java client
client languagesGo, Java

Alternatives to GoshawkDB

Compare all→
FoundationDBKey-Value36.8

Apple's ordered, strictly serializable distributed key-value store, built to have layers on top.

goshawkdb vs foundationdb →
CockroachDBRelational47.1

Postgres-wire distributed SQL built to survive node, zone and region failures with serializable transactions.

goshawkdb vs cockroachdb →
TiKVKey-Value20.8

CNCF-graduated, Raft-replicated transactional key-value store in Rust; the storage layer of TiDB.

goshawkdb vs tikv →
etcdKey-Value32.4

Raft-based, strongly consistent key-value store that holds Kubernetes' cluster state.

goshawkdb vs etcd →
GemStone/SObject6.1

Smalltalk object database where application code runs inside the transactional object repository.

goshawkdb vs gemstone-s →
JADEObject5.4

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.