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.
“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.
“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 (“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.”
“Scalable datastore for metrics, events, and real-time analytics.”
“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.
Graph database. It acts like a graph data layer and works on top of various data stores.
“Dgraph is a horizontally scalable and distributed graph database, providing ACID transactions, consistent replication and linearizable reads.”
“Embedded key/value database.”
“In-memory geospatial database.”
Noms, Badger, and projects like Vitess, rqlite and buntdb
Noms — https://github.com/attic-labs/noms — the versioned, forkable, syncable database inspired by Git version control system.
Badger — https://github.com/dgraph-io/badger — another embeddable key/value database by the author’s of Dgraph.
Vitess — https://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.
BuntDB — https://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.