Awesome Go Storage 
A curated list of awesome Go storage projects and libraries. Inspired by awesome-go.
Contributing
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!
Contents
Storage Server
Storage Servers implemented in Go.
- minio - Minio is an open source object storage server compatible with Amazon S3 APIs.
- rclone - "rsync for cloud storage" - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile…
- perkeep - Perkeep is your personal storage system for life: a way of storing, syncing, sharing, modelling and backing up content.
- s3git - Git for Cloud Storage. Distributed Version Control for Data.
- storj - Decentralized cloud object storage that is affordable, easy to use, private, and secure.
- rook - Open, Cloud Native, and Universal Distributed Storage.
- longhorn - Longhorn is an open source persistent block storage server delivered via containers.
Key-Value Store
Key-Value Store implemented in Go.
- Bitcask - Bitcask is an embeddable, persistent and fast key-value (KV) database written in pure Go with predictable read/write performance, low latency and high throughput thanks to the bitcask on-disk layout (LSM+WAL).
- Bitraft - Bitraft is a distributed raft-based key/value store with a Redis-compatible protocol. It uses Bitcask for high performance/throughout and low latency.
- BadgerDB - BadgerDB is an embeddable, persistent, simple and fast key-value (KV) database written in pure Go. It's meant to be a performant alternative to non-Go-based key-value stores like RocksDB.
- column - Embeddable, columnar, in-memory store with bitmap indexing, transaction and zero-alloc quering.
- consul - Distributed consistent replicated key-value store for service discovery and configuration.
- diskv - A disk-backed key-value store.
- etcd - Distributed reliable key-value store for the most critical data of a distributed system.
- go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
- IceFireDB - Distributed disk storage database using the Raft and Redis protocols.
- nutsdb - Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
- pogreb - Embedded key-value store for read-heavy workloads.
- rosedb - A fast, stable and embedded k-v database in pure Golang, supports string, list, hash, set, sorted set.
- LotusDB - Fast k/v storage compatible with lsm tree and b+tree.
File System
File Systems implemented in Go.
- afero - A FileSystem Abstraction System for Go
- fsnotify - Cross-platform file system notifications for Go.
- juicefs - A distributed POSIX file system built on top of Redis and S3.
- gcsfuse - A user-space file system for interacting with Google Cloud Storage.
- git-lfs - Git extension for versioning large files.
- go-systemd - Go bindings to systemd socket activation, journal, D-Bus, and unit files.
- goofys - A high-performance, POSIX-ish Amazon S3 file system written in Go.
- minikeyvalue - A ~1000 line distributed key value store.
- seaweedfs - SeaweedFS is a simple and highly scalable distributed file system for small files.
- svfs - A virtual file system over Openstack Swift built upon fuse.
Database
Databases implemented in Go.
- BigCache - Efficient key/value cache for gigabytes of data.
- bolt - A low-level key/value database for Go. This original version by Ben Johnson has been marked as unmaintained and forked by etcd-io bbolt.
- buntdb - A fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
- cache2go - An in-memory key:value cache which supports automatic invalidation based on timeouts.
- clover - A lightweight document-oriented NoSQL database written in pure Golang.
- cockroach - A Scalable, Geo-Replicated, Transactional Datastore
- couchcache - A RESTful caching micro-service backed by Couchbase server.
- CovenantSQL - A SQL Database with Blockchain features.
- dgraph - Scalable, Distributed, Low Latency, High Throughput Graph Database.
- diskv - A home-grown disk-backed key-value store.
- dolt - A MySQL-compatible database with Git-style version control. The first SQL database you can branch and merge.
- eliasdb - Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
- emitter - Scalable, low-latency, distributed & secure pub/sub database with time-series message storage, suitable for IoT, gaming, apps and real-time web.
- forestdb - Go bindings for ForestDB.
- frostdb - Embeddable column database written in Go.
Database schema migration.
- darwin - Database schema evolution library for Go
- goose - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
- gormigrate - Database schema migration helper for Gorm ORM.
- migrate - Database migration handling in Golang support MySQL, PostgreSQL, Cassandra, and SQLite.
- pravasan - Simple Migration tool - currently for MySQL but planning to support soon for Postgres, SQLite, MongoDB, etc.,
- soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
- sql-migrate - Database migration tool. Allows embedding migrations into the application using go-bindata.
Database tools.
- go-mysql - A go toolset to handle MySQL protocol and replication.
- go-mysql-elasticsearch - Sync your MySQL data into Elasticsearch automatically.
- kingshard - kingshard is a high performance proxy for MySQL powered by Golang.
- myreplication - MySql binary log replication listener. Support statement and row based replication.
- orchestrator - MySQL replication topology manager & visualizer
- pgweb - A web-based PostgreSQL database browser
- vitess - vitess provides serv