优秀的 Go 存储开源项目和库

Dropbox的成功大部分归功于Python,这个语言可以使我们快速迭代开发。然而,为了支持日益增长的用户量,我们的基础设施日渐成熟,这时
我们开始寻找一种更为高效的方式来改变系统规模。大约在一年前,我们作出决定,把对于性能要求很苛刻的后台部分从Python迁移到了Go语言,以提供更
好的并发支持和更快的运行速度。一个规模很小的工程师团队做出了大量的努力,这背后大约是200,000(二十万)行Go语言代码。此时,我们成功地把架
构的大部分迁移到了Go语言。

澳门新葡亰 1

缺少构建大型系统的健壮的程序库,已经成为了反复出现阻碍我们开发进度的问题。这并不奇怪,因为Go语言还是一门十分年轻的语言。为了处理这个问
题,我们的团队开始构建各种各样的库,已提供更好的封装抽象,例如连接管理和MenCache客户端。我们非常兴奋的宣布我们开源了这些库,帮助更广大的
社区开发大型的产品系统。

摘要: 本文整理了一些优秀的 Go
存储相关开源项目和库。可以看到,今年谷歌家的 Go
编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的
Go 存储相关开源项目和库,一起分享,一起学习。存储服务器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 存储Go 实现的 Key-Value
    存储etcd
    – 可靠的分布式 key-value
    存储,用于分布式系统的最关键数据go-cache – Go
    语言实现的一个内存中的缓存框架,实现 Key-Value
    的序列存储,适用于单台机器应用程序biscuit – Biscuit 用于 AWS
    基础架构建设时多区域 HA key-value 存储diskv – 支持磁盘的 key-value
    存储文件系统Go 实现的文件系统git-lfs – 用于大文件版本控制的 Git
    扩展seaweedfs – SeaweedFS
    是一个用于小文件的简单且高度可扩展的分布式文件系统fsnotify – Go
    实现的跨平台文件系统监控库goofys – Go 实现的高性能,POSIX-ish Amazon
    S3 文件系统go-systemd – systemd 的 Go 语言绑定版gcsfuse – 用于与
    Google 云存储交互的用户空间文件系统svfs – 基于 Openstack
    的虚拟文件系统数据库Go 实现的数据库BigCache – 用于千兆字节数据的高效
    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 语言绑定版的 ForestDBGCache – 支持可用缓存、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
    是一个缓存和缓存填充库,在许多情况下用于替代 memcachedinfluxdb
    开源的分布式指标、事件和实时分析的可扩展数据库ledisdb – 基于 LevelDB
    类似 Redis 的高性能 NoSQL 数据库levigo – 用于 LevelDB 的 Go
    封装包moss – Go 实现的简单 LSM key-value 存储引擎piladb
    基于堆栈数据结构的轻量级 RESTful 数据库引擎pREST – 为任何来自
    PostgreSQL 的数据库提供一个 RESTful APIprometheus
    服务监控系统和时间序列数据库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, 和 SQLitepravasan – 简单的迁移工具,目前支持
    MySQL,PostgreSQL,但计划很快支持 SQLite, MongoDB 等soda
    具有数据库迁移、创建和 ORM 等功能,适用于 MySQL, PostgreSQL, 和
    SQLitesql-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/sqlgo-bqstreamer – BigQuery 快速并发流插入go-mssqldb
    Microsoft MSSQL 驱动go-oci8 – Oracle 驱动,使用
    database/sqlgo-sql-driver/mysql – MySQL 驱动go-sqlite3 – SQLite3
    驱动,使用 database/sqlgofreetds – 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.数据结构服务和存储原文:
  • caching :提供建立caching层的通用抽象。

  • errors :强化了标准错误接口并且揭示出栈跟踪的信息

  • database/sqlbuilder : 允许开发者用可编程的方式生成sql语句。

  • memcache : 实现了一个全特性的memcache客户端库,支持连接池和灵活的
    shading 。

  • net2 : 连接管理中加入了函数性功能。

  • (还有我个人最喜欢的,hash2,它包含了一个空间效率高,基于排列的连续哈希算法)

网站地图xml地图