這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
可以看到,今年Google家的 Go 程式設計語言流行度有著驚人的上升趨勢,其發展也是越來越好,因此本文整理了一些優秀的 Go 儲存相關開源項目和庫,一起分享,一起學習。
儲存伺服器(Storage Server)
Go 實現的儲存伺服器
- minio - Minio 是一個與 Amazon S3 APIs 相容的開來源物件儲存伺服器,分布式儲存方案
- rclone - “用於雲端儲存的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile…
- camlistore - Camlistore 是你的個人存放區系統:一種儲存、同步、共用、建模和備份內容的方式
- torus - CoreOS 的現代分布式儲存系統
- s3git - 雲端儲存的 Git。用於資料的分布式版本控制系統
- rook - 開放、雲本地和通用的分布式儲存
Key-Value 儲存(Key-Value Store)
Go 實現的 Key-Value 儲存
- etcd - 可靠的分布式 key-value 儲存,用於分布式系統的最關鍵資料
- go-cache - Go 語言實現的一個記憶體中的緩衝架構,實現 Key-Value 的序列儲存,適用於單台機器應用程式
- biscuit - Biscuit 用於 AWS 基礎架構建設時多地區 HA key-value 儲存
- diskv - 支援磁碟的 key-value 儲存
檔案系統(File System)
Go 實現的檔案系統
- git-lfs - 用於大檔案版本控制的 Git 擴充
- seaweedfs - SeaweedFS 是一個用於小檔案的簡單且高度可擴充的Distributed File System
- fsnotify - Go 實現的跨平台檔案系統監控庫
- goofys - Go 實現的高效能,POSIX-ish Amazon S3 檔案系統
- go-systemd - systemd 的 Go 語言綁定版(包括socket activation, journal, D-Bus, 和 unit files)
- gcsfuse - 用於與 Google 雲端儲存互動的使用者空間檔案系統
- svfs - 基於 Openstack 的虛擬檔案系統
資料庫(Database)
Go 實現的資料庫
- BigCache - 用於千MB資料的高效 key/value 緩衝
- bolt - Go 實現的低層級的 key/value 資料庫
- buntdb - 一個 Go 實現的快速、可嵌入的 key/value 記憶體資料庫,具有自訂索引和 geospatial 支援的功能
- cache2go - key/value 記憶體緩衝,支援基於逾時的自動無效功能
- cockroach - 一個可伸縮的、支援地理位置處理、支援交易處理的資料存放區系統
- couchcache - 由 Couchbase 伺服器支援的 RESTful 緩衝微服務
- dgraph - 具有可擴充、分布式、低延遲和高輸送量功能的圖形資料庫
- eliasdb - 使用 REST API,短語搜尋和類似 SQL 查詢語言的無依賴性,支援交易處理的圖形資料庫
- forestdb - Go bindings for ForestDB.Go 語言綁定版的 ForestDB
- GCache - 支援可用緩衝、LFU、LRU 和 ARC 的快取資料庫
- geocache - An in-memory cache that is suitable for geolocation based applications.適用於 地理位置處理基於應用程式的記憶體緩衝
- goleveldb - An implementation of the LevelDB key/value database in the Go.Go 實現的 LevelDB key/value 資料庫
- groupcache - Groupcache 是一個緩衝和緩衝填充庫,在許多情況下用於替代 memcached
- influxdb - 開源的分布式指標、事件和即時分析的可擴充資料庫
- ledisdb - 基於 LevelDB 類似 Redis 的高效能 NoSQL 資料庫
- levigo - 用於 LevelDB 的 Go 封裝包
- moss - Go 實現的簡單 LSM key-value 儲存引擎
- piladb - 基於堆棧資料結構的輕量級 RESTful 資料庫引擎
- pREST - 為任何來自 PostgreSQL 的資料庫提供一個 RESTful API
- prometheus - 服務監控系統和時間序列資料庫
- rqlite - 基於 SQLite 構建的輕量級、分布式關聯式資料庫
- scribble - 一個小型的 Flat File JSON 儲存
- tidb - TiDB 是一個分布式 SQL 資料庫,靈感來自於 Google F1 和 Google spanner。TiDB 支援包括傳統 RDBMS 和 NoSQL 的特性。
- tiedot - 基於 Go 的 NoSQL 資料庫
- Tile38 - 具有空間索引和即時地理柵欄的地理位置資料庫
資料庫遷移
- darwin - Go 實現的資料庫 schema 演化庫
- goose - 資料庫遷移工具。可通過建立增量 SQL 或 Go 指令碼來管理資料庫的演變
- gormigrate - Gorm ORM 的資料庫遷移助手
- migrate - Go 實現的資料庫遷移處理,支援 MySQL, PostgreSQL, Cassandra, 和 SQLite
- pravasan - 簡單的遷移工具,目前支援 MySQL,PostgreSQL,但計劃很快支援 SQLite, MongoDB 等
- soda - 具有資料庫遷移、建立和 ORM 等功能,適用於 MySQL, PostgreSQL, 和 SQLite
- sql-migrate - 資料庫 schema 遷移工具。允許使用 go-bindata 將遷移嵌入到應用程式中
資料庫工具
- go-mysql - Go 實現的用於處理 MySQL 協議和複製的工具集
- go-mysql-elasticsearch - 將 MySQL 資料自動同步到 Elasticsearch 中
- kingshard - Go 實現的高效能 MySQL Proxy 項目
- myreplication - MySQL 二進位日誌複製監聽器。支援語句和基於行的複製
- orchestrator - MySQL 複寫拓撲管理器和視覺化檢視
- pgweb - Go 實現的基於 Web 的 PostgreSQL 資料庫管理系統
- vitess - 分布式 MySQL 工具集。vitess 提供了伺服器和工具,以便於大規模 Web 服務的 MySQL 資料庫擴充
SQL 查詢構建器,用於構建和使用 SQL 的庫
- dat - Go 實現的 Postgres 資料存取工具包
- Dotsql - Go 語言實現的庫,可協助你將 sql 檔案儲存至某個地方並便於使用它
- goqu - Go 實現的 SQL 構建器和查詢庫
- igor - PostgreSQL 的抽象層,支援進階功能並使用類似 Gorm 的文法
- ozzo-dbx - 強大的資料檢索方法以及 DB-agnostic 查詢構建功能
- scaneo - 產生 Go 代碼以將資料庫行轉換為任意結構
- sqrl - SQL 查詢構建器,Squirrel 的 fork 具有更好的效能
- Squirrel - 協助你構建 SQL 查詢的 Go 庫
- xo - 基於現有 schema 定義或支援 PostgreSQL,MySQL,SQLite,Oracle 和 Microsoft SQL Server 的自訂查詢產生資料庫的慣用 Go 代碼
資料庫驅動
用於串連和操作資料庫的庫
關聯式資料庫
- bgc - Go 實現的用於 BigQuery 的資料存放區串連
- firebirdsql - Firebird RDBMS SQL 驅動
- go-adodb - Microsoft ActiveX Object 資料庫驅動,使用 database/sql
- go-bqstreamer - BigQuery 快速並發流插入
- go-mssqldb - Microsoft MSSQL 驅動
- go-oci8 - Oracle 驅動,使用 database/sql
- go-sql-driver/mysql - MySQL 驅動
- go-sqlite3 - SQLite3 驅動,使用 database/sql
- gofreetds - Microsoft MSSQL 驅動。Go wrapper over FreeTDS.
- pgx - PostgreSQL 驅動
- pq - Go 實現的用於 database/sql 的 Postgres 驅動
NoSQL 資料庫
- aerospike-client-go - Go 實現的 Aerospike 用戶端
- arangolite - Go 實現的 ArangoDB 輕量級驅動程式
- asc - 用於 Aerospike 的資料存放區串連
- cayley - 支援多個後端的圖形資料庫
- dsc - 用於 SQL, NoSQL 以及結構化檔案的資料存放區串連
- dynago - DynamoDB 的用戶端
- go-couchbase - Go 實現的 Couchbase 用戶端
- go-couchdb - Go 實現的 CouchDB HTTP API 封裝包
- gocb - 官方的 Couchbase Go SDK 包
- gocql - Go 實現的 Apache Cassandra 驅動
- gomemcache - memcache 用戶端庫
- gorethink - RethinkDB 驅動
- goriak - Riak KV 驅動
- mgo - MongoDB 驅動,它根據標準 Go 習慣用法在非常簡單的 API 下實現豐富且經過良好測試的功能選擇
- neo4j - Neo4j Rest API 綁定
- Neo4j-GO - Neo4j REST 用戶端
- neoism - Neo4j client 用戶端
- redigo - Redis 資料庫用戶端
- redis - Redis 用戶端
- redis - 簡單強大的 Redis 用戶端
- redis - Redis 協議相容 TCP servers/services
搜尋和分析資料庫
- bleve - 現代文本索引庫
- elastic - Elasticsearch 用戶端
- elastigo - Elasticsearch 用戶端庫
- goes - 與 Elasticsearch 互動的庫
- skizze - A probabilistic data-structures service and storage.資料結構服務和儲存
來自:https://github.com/gostor/awesome-go-storage