4

Popular Database Implementations in Go

 2 years ago
source link: https://kenanbek.medium.com/popular-database-implementations-in-go-6546ded9dba9
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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.

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.

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.

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.”


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK