炙手可热,那些优秀的 Go 存储开源项目和库
linchuan02
8年前
<p style="text-align: center;"><img src="https://simg.open-open.com/show/3c26d002ddd60837139ecd5816537f99.png"></p> <p>可以看到,今年谷歌家的 Go 编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的 Go 存储相关开源项目和库,一起分享,一起学习。</p> <h2><strong>存储服务器(Storage Server)</strong></h2> <h3>Go 实现的存储服务器</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737189843538090" rel="nofollow,noindex">minio</a> </strong> - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案</li> <li><strong><a href="/misc/goto?guid=4959737189924001261" rel="nofollow,noindex">rclone</a> </strong> - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile…</li> <li><strong><a href="/misc/goto?guid=4959737190007193543" rel="nofollow,noindex">camlistore</a> </strong> - Camlistore 是你的个人存储系统:一种存储、同步、共享、建模和备份内容的方式</li> <li><strong><a href="/misc/goto?guid=4959674365235550725" rel="nofollow,noindex">torus</a> </strong> - CoreOS 的现代分布式存储系统</li> <li><strong><a href="/misc/goto?guid=4959737190130898320" rel="nofollow,noindex">s3git</a> </strong> - 云存储的 Git。用于数据的分布式版本控制系统</li> <li><strong><a href="/misc/goto?guid=4959737190216299958" rel="nofollow,noindex">rook</a> </strong> - 开放、云本地和通用的分布式存储</li> </ul> <h2><strong>Key-Value 存储(Key-Value Store)</strong></h2> <h3>Go 实现的 Key-Value 存储</h3> <ul> <li><strong><a href="/misc/goto?guid=4958826104637417261" rel="nofollow,noindex">etcd</a> </strong> - 可靠的分布式 key-value 存储,用于分布式系统的最关键数据</li> <li><strong><a href="/misc/goto?guid=4959737190335332571" rel="nofollow,noindex">go-cache</a> </strong> - Go 语言实现的一个内存中的缓存框架,实现 Key-Value 的序列存储,适用于单台机器应用程序</li> <li><strong><a href="/misc/goto?guid=4959737190423651550" rel="nofollow,noindex">biscuit</a> </strong> - Biscuit 用于 AWS 基础架构建设时多区域 HA key-value 存储</li> <li><strong><a href="/misc/goto?guid=4959552603318138358" rel="nofollow,noindex">diskv</a> </strong> - 支持磁盘的 key-value 存储</li> </ul> <h2><strong>文件系统(File System)</strong></h2> <h3>Go 实现的文件系统</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737190536843888" rel="nofollow,noindex">git-lfs</a> </strong> - 用于大文件版本控制的 Git 扩展</li> <li><strong><a href="/misc/goto?guid=4959643557233072950" rel="nofollow,noindex">seaweedfs</a> </strong> - SeaweedFS 是一个用于小文件的简单且高度可扩展的分布式文件系统</li> <li><strong><a href="/misc/goto?guid=4959676765879617617" rel="nofollow,noindex">fsnotify</a> </strong> - Go 实现的跨平台文件系统监控库</li> <li><strong><a href="/misc/goto?guid=4959737190675524837" rel="nofollow,noindex">goofys</a> </strong> - Go 实现的高性能,POSIX-ish Amazon S3 文件系统</li> <li><strong><a href="/misc/goto?guid=4959737190766012716" rel="nofollow,noindex">go-systemd</a> </strong> - systemd 的 Go 语言绑定版(包括socket activation, journal, D-Bus, 和 unit files)</li> <li><strong><a href="/misc/goto?guid=4959737190845523186" rel="nofollow,noindex">gcsfuse</a> </strong> - 用于与 Google 云存储交互的用户空间文件系统</li> <li><strong><a href="/misc/goto?guid=4959737190930711877" rel="nofollow,noindex">svfs</a> </strong> - 基于 Openstack 的虚拟文件系统</li> </ul> <h2><strong>数据库(Database)</strong></h2> <h3>Go 实现的数据库</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737191015933764" rel="nofollow,noindex">BigCache</a> </strong> - 用于千兆字节数据的高效 key/value 缓存</li> <li><strong><a href="/misc/goto?guid=4959555087374179312" rel="nofollow,noindex">bolt</a> </strong> - Go 实现的低层级的 key/value 数据库</li> <li><strong><a href="/misc/goto?guid=4959737191140969328" rel="nofollow,noindex">buntdb</a> </strong> - 一个 Go 实现的快速、可嵌入的 key/value 内存数据库,具有自定义索引和 geospatial 支持的功能</li> <li><strong><a href="/misc/goto?guid=4959552588304677150" rel="nofollow,noindex">cache2go</a> </strong> - key/value 内存缓存,支持基于超时的自动无效功能</li> <li><strong><a href="/misc/goto?guid=4958837628767737732" rel="nofollow,noindex">cockroach</a> </strong> - 一个可伸缩的、支持地理位置处理、支持事务处理的数据存储系统</li> <li><strong><a href="/misc/goto?guid=4959643527894403078" rel="nofollow,noindex">couchcache</a> </strong> - 由 Couchbase 服务器支持的 RESTful 缓存微服务</li> <li><strong><a href="/misc/goto?guid=4959737191307302684" rel="nofollow,noindex">dgraph</a> </strong> - 具有可扩展、分布式、低延迟和高吞吐量功能的图形数据库</li> <li><strong><a href="/misc/goto?guid=4959737191396125231" rel="nofollow,noindex">eliasdb</a> </strong> - 使用 REST API,短语搜索和类似 SQL 查询语言的无依赖性,支持事务处理的图形数据库</li> <li><strong><a href="/misc/goto?guid=4959643528007412459" rel="nofollow,noindex">forestdb</a> </strong> - Go bindings for ForestDB.Go 语言绑定版的 ForestDB</li> <li><strong><a href="/misc/goto?guid=4959643528077434625" rel="nofollow,noindex">GCache</a> </strong> - 支持可用缓存、LFU、LRU 和 ARC 的缓存数据库</li> <li><strong><a href="/misc/goto?guid=4959737191536259670" rel="nofollow,noindex">geocache</a> </strong> - An in-memory cache that is suitable for geolocation based applications.适用于 地理位置处理基于应用程序的内存缓存</li> <li><strong><a href="/misc/goto?guid=4959555087538105567" rel="nofollow,noindex">goleveldb</a> </strong> - An implementation of the <a href="/misc/goto?guid=4958848609595082581" rel="nofollow,noindex">LevelDB</a> key/value database in the Go.Go 实现的 LevelDB key/value 数据库</li> <li><strong><a href="/misc/goto?guid=4958544836737312270" rel="nofollow,noindex">groupcache</a> </strong> - Groupcache 是一个缓存和缓存填充库,在许多情况下用于替代 memcached</li> <li><strong><a href="/misc/goto?guid=4958838691322060258" rel="nofollow,noindex">influxdb</a> </strong> - 开源的分布式指标、事件和实时分析的可扩展数据库</li> <li><strong><a href="/misc/goto?guid=4958838478917096579" rel="nofollow,noindex">ledisdb</a> </strong> - 基于 LevelDB 类似 Redis 的高性能 NoSQL 数据库</li> <li><strong><a href="/misc/goto?guid=4959552603669011502" rel="nofollow,noindex">levigo</a> </strong> - 用于 LevelDB 的 Go 封装包</li> <li><strong><a href="/misc/goto?guid=4959737191795691357" rel="nofollow,noindex">moss</a> </strong> - Go 实现的简单 LSM key-value 存储引擎</li> <li><strong><a href="/misc/goto?guid=4959737191869262640" rel="nofollow,noindex">piladb</a> </strong> - 基于堆栈数据结构的轻量级 RESTful 数据库引擎</li> <li><strong><a href="/misc/goto?guid=4959737191960057743" rel="nofollow,noindex">pREST</a> </strong> - 为任何来自 PostgreSQL 的数据库提供一个 RESTful API</li> <li><strong><a href="/misc/goto?guid=4958974291070846830" rel="nofollow,noindex">prometheus</a> </strong> - 服务监控系统和时间序列数据库</li> <li><strong><a href="/misc/goto?guid=4959737192082838213" rel="nofollow,noindex">rqlite</a> </strong> - 基于 SQLite 构建的轻量级、分布式关系数据库</li> <li><strong><a href="/misc/goto?guid=4959737192170842060" rel="nofollow,noindex">scribble</a> </strong> - 一个小型的 Flat File JSON 存储</li> <li><strong><a href="/misc/goto?guid=4959729310439242145" rel="nofollow,noindex">tidb</a> </strong> - TiDB 是一个分布式 SQL 数据库,灵感来自于 Google F1 和 Google spanner。TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。</li> <li><strong><a href="/misc/goto?guid=4959552603828761513" rel="nofollow,noindex">tiedot</a> </strong> - 基于 Go 的 NoSQL 数据库</li> <li><strong><a href="/misc/goto?guid=4959737192312796729" rel="nofollow,noindex">Tile38</a> </strong> - 具有空间索引和实时地理围栏的地理位置数据库</li> </ul> <h3>数据库迁移</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737192395593682" rel="nofollow,noindex">darwin</a> </strong> - Go 实现的数据库 schema 演进库</li> <li><strong><a href="/misc/goto?guid=4959737192491114030" rel="nofollow,noindex">goose</a> </strong> - 数据库迁移工具。可通过创建增量 SQL 或 Go 脚本来管理数据库的演变</li> <li><strong><a href="/misc/goto?guid=4959737192575593586" rel="nofollow,noindex">gormigrate</a> </strong> - Gorm ORM 的数据库迁移助手</li> <li><strong><a href="/misc/goto?guid=4959632171809557473" rel="nofollow,noindex">migrate</a> </strong> - Go 实现的数据库迁移处理,支持 MySQL, PostgreSQL, Cassandra, 和 SQLite</li> <li><strong><a href="/misc/goto?guid=4959643528770783793" rel="nofollow,noindex">pravasan</a> </strong> - 简单的迁移工具,目前支持 MySQL,PostgreSQL,但计划很快支持 SQLite, MongoDB 等</li> <li><strong><a href="/misc/goto?guid=4959737192722947886" rel="nofollow,noindex">soda</a> </strong> - 具有数据库迁移、创建和 ORM 等功能,适用于 MySQL, PostgreSQL, 和 SQLite</li> <li><strong><a href="/misc/goto?guid=4959737192807855343" rel="nofollow,noindex">sql-migrate</a> </strong> - 数据库 schema 迁移工具。允许使用 go-bindata 将迁移嵌入到应用程序中</li> </ul> <h3>数据库工具</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737192903151961" rel="nofollow,noindex">go-mysql</a> </strong> - Go 实现的用于处理 MySQL 协议和复制的工具集</li> <li><strong><a href="/misc/goto?guid=4959631678988768031" rel="nofollow,noindex">go-mysql-elasticsearch</a> </strong> - 将 MySQL 数据自动同步到 Elasticsearch 中</li> <li><strong><a href="/misc/goto?guid=4959737193021061117" rel="nofollow,noindex">kingshard</a> </strong> - Go 实现的高性能 MySQL Proxy 项目</li> <li><strong><a href="/misc/goto?guid=4959643528577275400" rel="nofollow,noindex">myreplication</a> </strong> - MySQL 二进制日志复制监听器。支持语句和基于行的复制</li> <li><strong><a href="/misc/goto?guid=4959737193141176772" rel="nofollow,noindex">orchestrator</a> </strong> - MySQL 复制拓扑管理器和可视化工具</li> <li><strong><a href="/misc/goto?guid=4959737193223161170" rel="nofollow,noindex">pgweb</a> </strong> - Go 实现的基于 Web 的 PostgreSQL 数据库管理系统</li> <li><strong><a href="/misc/goto?guid=4959737193316726340" rel="nofollow,noindex">vitess</a> </strong> - 分布式 MySQL 工具集。vitess 提供了服务器和工具,以便于大规模 Web 服务的 MySQL 数据库扩展</li> </ul> <h3>SQL 查询构建器,用于构建和使用 SQL 的库</h3> <ul> <li><strong><a href="/misc/goto?guid=4959649778588774175" rel="nofollow,noindex">dat</a> </strong> - Go 实现的 Postgres 数据访问工具包</li> <li><strong><a href="/misc/goto?guid=4959643528949428315" rel="nofollow,noindex">Dotsql</a> </strong> - Go 语言实现的库,可帮助你将 sql 文件保存至某个地方并轻松使用它</li> <li><strong><a href="/misc/goto?guid=4959643529034963935" rel="nofollow,noindex">goqu</a> </strong> - Go 实现的 SQL 构建器和查询库</li> <li><strong><a href="/misc/goto?guid=4959737193492382614" rel="nofollow,noindex">igor</a> </strong> - PostgreSQL 的抽象层,支持高级功能并使用类似 Gorm 的语法</li> <li><strong><a href="/misc/goto?guid=4959649778733068912" rel="nofollow,noindex">ozzo-dbx</a> </strong> - 强大的数据检索方法以及 DB-agnostic 查询构建功能</li> <li><strong><a href="/misc/goto?guid=4959643529112287922" rel="nofollow,noindex">scaneo</a> </strong> - 生成 Go 代码以将数据库行转换为任意结构</li> <li><strong><a href="/misc/goto?guid=4959737193644929906" rel="nofollow,noindex">sqrl</a> </strong> - SQL 查询构建器,Squirrel 的 fork 具有更好的性能</li> <li><strong><a href="/misc/goto?guid=4959649778839658888" rel="nofollow,noindex">Squirrel</a> </strong> - 帮助你构建 SQL 查询的 Go 库</li> <li><strong><a href="/misc/goto?guid=4959737193747704227" rel="nofollow,noindex">xo</a> </strong> - 基于现有 schema 定义或支持 PostgreSQL,MySQL,SQLite,Oracle 和 Microsoft SQL Server 的自定义查询生成数据库的惯用 Go 代码</li> </ul> <h2>数据库驱动</h2> <p>用于连接和操作数据库的库</p> <h3>关系数据库</h3> <ul> <li><strong><a href="/misc/goto?guid=4959737193843209944" rel="nofollow,noindex">bgc</a> </strong> - Go 实现的用于 BigQuery 的数据存储连接</li> <li><strong><a href="/misc/goto?guid=4959643529219046350" rel="nofollow,noindex">firebirdsql</a> </strong> - Firebird RDBMS SQL 驱动</li> <li><strong><a href="/misc/goto?guid=4959615885845702863" rel="nofollow,noindex">go-adodb</a> </strong> - Microsoft ActiveX Object 数据库驱动,使用 database/sql</li> <li><strong><a href="/misc/goto?guid=4959643529330090472" rel="nofollow,noindex">go-bqstreamer</a> </strong> - BigQuery 快速并发流插入</li> <li><strong><a href="/misc/goto?guid=4959615885930594474" rel="nofollow,noindex">go-mssqldb</a> </strong> - Microsoft MSSQL 驱动</li> <li><strong><a href="/misc/goto?guid=4959643529436143651" rel="nofollow,noindex">go-oci8</a> </strong> - Oracle 驱动,使用 database/sql</li> <li><strong><a href="/misc/goto?guid=4959552601254399111" rel="nofollow,noindex">go-sql-driver/mysql</a> </strong> - MySQL 驱动</li> <li><strong><a href="/misc/goto?guid=4958823216250905592" rel="nofollow,noindex">go-sqlite3</a> </strong> - SQLite3 驱动,使用 database/sql</li> <li><strong><a href="/misc/goto?guid=4959643529569347031" rel="nofollow,noindex">gofreetds</a> </strong> - Microsoft MSSQL 驱动。Go wrapper over <a href="/misc/goto?guid=4959737194169990665" rel="nofollow,noindex">FreeTDS</a> .</li> <li><strong><a href="/misc/goto?guid=4959649779183861521" rel="nofollow,noindex">pgx</a> </strong> - PostgreSQL 驱动</li> <li><strong><a href="/misc/goto?guid=4959552601865368137" rel="nofollow,noindex">pq</a> </strong> - Go 实现的用于 database/sql 的 Postgres 驱动</li> </ul> <h3>NoSQL 数据库</h3> <ul> <li><strong><a href="/misc/goto?guid=4959643529754880991" rel="nofollow,noindex">aerospike-client-go</a> </strong> - Go 实现的 Aerospike 客户端</li> <li><strong><a href="/misc/goto?guid=4959649779324988806" rel="nofollow,noindex">arangolite</a> </strong> - Go 实现的 ArangoDB 轻量级驱动程序</li> <li><strong><a href="/misc/goto?guid=4959737194367594917" rel="nofollow,noindex">asc</a> </strong> - 用于 Aerospike 的数据存储连接</li> <li><strong><a href="/misc/goto?guid=4958838691139115303" rel="nofollow,noindex">cayley</a> </strong> - 支持多个后端的图形数据库</li> <li><strong><a href="/misc/goto?guid=4959737194480683809" rel="nofollow,noindex">dsc</a> </strong> - 用于 SQL, NoSQL 以及结构化文件的数据存储连接</li> <li><strong><a href="/misc/goto?guid=4959649779436895360" rel="nofollow,noindex">dynago</a> </strong> - DynamoDB 的客户端</li> <li><strong><a href="/misc/goto?guid=4959643529863479579" rel="nofollow,noindex">go-couchbase</a> </strong> - Go 实现的 Couchbase 客户端</li> <li><strong><a href="/misc/goto?guid=4959643529946410015" rel="nofollow,noindex">go-couchdb</a> </strong> - Go 实现的 CouchDB HTTP API 封装包</li> <li><strong><a href="/misc/goto?guid=4959649779577332233" rel="nofollow,noindex">gocb</a> </strong> - 官方的 Couchbase Go SDK 包</li> <li><strong><a href="/misc/goto?guid=4959737194690473203" rel="nofollow,noindex">gocql</a> </strong> - Go 实现的 Apache Cassandra 驱动</li> <li><strong><a href="/misc/goto?guid=4959555088154631602" rel="nofollow,noindex">gomemcache</a> </strong> - memcache 客户端库</li> <li><strong><a href="/misc/goto?guid=4959615886229827833" rel="nofollow,noindex">gorethink</a> </strong> - RethinkDB 驱动</li> <li><strong><a href="/misc/goto?guid=4959737194823283566" rel="nofollow,noindex">goriak</a> </strong> - Riak KV 驱动</li> <li><strong><a href="/misc/goto?guid=4959649779751002508" rel="nofollow,noindex">mgo</a> </strong> - MongoDB 驱动,它根据标准 Go 习惯用法在非常简单的 API 下实现丰富且经过良好测试的功能选择</li> <li><strong><a href="/misc/goto?guid=4959615886430372814" rel="nofollow,noindex">neo4j</a> </strong> - Neo4j Rest API 绑定</li> <li><strong><a href="/misc/goto?guid=4959552606030962361" rel="nofollow,noindex">Neo4j-GO</a> </strong> - Neo4j REST 客户端</li> <li><strong><a href="/misc/goto?guid=4959552606113573835" rel="nofollow,noindex">neoism</a> </strong> - Neo4j client 客户端</li> <li><strong><a href="/misc/goto?guid=4959552602219181596" rel="nofollow,noindex">redigo</a> </strong> - Redis 数据库客户端</li> <li><strong><a href="/misc/goto?guid=4959643530388532346" rel="nofollow,noindex">redis</a> </strong> - Redis 客户端</li> <li><strong><a href="/misc/goto?guid=4959555087933837239" rel="nofollow,noindex">redis</a> </strong> - 简单强大的 Redis 客户端</li> <li><strong><a href="/misc/goto?guid=4959649780005173549" rel="nofollow,noindex">redis</a> </strong> - Redis 协议兼容 TCP servers/services</li> </ul> <h3>搜索和分析数据库</h3> <ul> <li><strong><a href="/misc/goto?guid=4958869266176069723" rel="nofollow,noindex">bleve</a> </strong> - 现代文本索引库</li> <li><strong><a href="/misc/goto?guid=4959643530521679338" rel="nofollow,noindex">elastic</a> </strong> - Elasticsearch 客户端</li> <li><strong><a href="/misc/goto?guid=4959626168750532206" rel="nofollow,noindex">elastigo</a> </strong> - Elasticsearch 客户端库</li> <li><strong><a href="/misc/goto?guid=4959643530628625409" rel="nofollow,noindex">goes</a> </strong> - 与 Elasticsearch 交互的库</li> <li><strong><a href="/misc/goto?guid=4959649780202745686" rel="nofollow,noindex">skizze</a> </strong> - A probabilistic data-structures service and storage.数据结构服务和存储</li> </ul> <p>来自: <a href="/misc/goto?guid=4959737383692378149" rel="nofollow,noindex">https://github.com/gostor/awesome-go-storage</a></p> <p> </p> <p>来自:https://my.oschina.net/editorial-story/blog/838672</p> <p> </p>