Popular Database Implementations in Go

When I first discovered the fact that ETCD is written in Go, I was quite surprised. My expectation was C or C++, maybe Python, but not Go. I knew that Go is quite popular in a cloud-native word and was aware of the fact that Docker and Kubernetes are written in Go. But for database systems, you usually do not expect to see new languages in use (here I should say relatively new, because first release of Go was back in 2009).

That’s why I decided to invest some time in the future and check popular database implementations in Go. The most recent example is Dgraph Graph Database. I use it in one of my “research” projects and wrote an introduction article for Go. I also have experience in using ETCD and Prometheus from Go. This article is a kind of road map for myself also to check out other databases written mostly in Go.

For a more detailed list of the databases in Go, please refer to Awesome Go.

This is my first article on LinkedIn. Usually, I post on Medium, kenanbek.github.io, and this YouTube channel for video tutorials.

Let’s start.

ETCD

GitHub: https://github.com/etcd-io/etcd

“Distributed reliable key-value store for the most critical data of a distribution system.”

In most of my projects, ETCD is a default choice for storing configuration. It’s also a cloud-native friendly database and is CNCF incubating project.

Prometheus

GitHub: https://github.com/prometheus/prometheus

“The Prometheus monitoring system and time series database.”

Prometheus is a graduated CNCF project, and nowadays, it’s a de facto time-series database. Some of the database systems and development toolkits embed Promethes as a source for metrics.

TiDB

GitHub: https://github.com/pingcap/tidb

“TiDB (“Ti” stands for Titanium) is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL compatible and features horizontal scalability, strong consistency, and high availability.”

InfluxDB

GitHub: https://github.com/influxdata/influxdb

“Scalable datastore for metrics, events, and real-time analytics.”

CockroachDB

GitHub: https://github.com/cockroachdb/cockroach

“Distributed SQL database.”

Some time ago, I was very keen to use CockroachDB for one of my projects. Its idea of a distributed SQL database sounds quite interesting. If you are interested, please check this podcast with the co-founder of CockroachDB by Software Engineering Daily.

Cayley

GitHub: https://github.com/cayleygraph/cayley

Graph database. It acts like a graph data layer and works on top of various data stores.

Dgraph

GitHub: https://github.com/dgraph-io/dgraph

“Dgraph is a horizontally scalable and distributed graph database, providing ACID transactions, consistent replication and linearizable reads.”

Dgraph uses Badger (see below) and has complete ownership over the data. Check this and this if you want to understand difference between Dgraph and Cayley.

Bolt

GitHub: https://github.com/boltdb/bolt

“Embedded key/value database.”

Please note that further development of Bolt stopped. You can refer to bbolt, which is a fork of Bolt by the authors of the ETCD.

Tile38

GitHub: https://github.com/tidwall/tile38

“In-memory geospatial database.”

Noms, Badger, and projects like Vitess, rqlite and buntdb

Nomshttps://github.com/attic-labs/noms — the versioned, forkable, syncable database inspired by Git version control system.

Badgerhttps://github.com/dgraph-io/badger — another embeddable key/value database by the author’s of Dgraph.

Vitesshttps://github.com/vitessio/vitess — database clustering system for horizontal scaling of MySQL through generalized sharding. Vistess has been core component of YouTube’s database infrastructure since 2011.

rqlitehttps://github.com/rqlite/rqlite — lightweight, distributed relational database, which uses SQLite as its storage engine.

BuntDBhttps://github.com/tidwall/buntdb — embeddable, in-memory key/value database for Go with custom indexing and geospatial support.

Originally published at https://www.linkedin.com.

Software Engineer. Go and Python. Learning Rust. https://kenanbek.github.io/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store