标签 Go 下的文章

谁才是 Go 生态的“幕后之王”?—— 深度挖掘 4000 万个节点后的惊人发现

本文永久链接 – https://tonybai.com/2026/01/09/the-most-popular-go-dependency-is

大家好,我是Tony Bai。

在 Go 的世界里,我们每天都在引入各种 import。但你是否想过,整个 Go 生态系统中,究竟哪个包是被依赖次数最多的“基石”?

通常,我们会参考 GitHub Stars 或 Awesome 列表,但这往往带有主观偏差。为了寻找最客观的答案,开发者 Thibaut Rousseau 做了一件疯狂的事他下载了 Go Proxy 自 2019 年以来的所有模块元数据,构建了一个包含 4000 万个节点、4 亿条关系的巨大图谱。

结果令人大开眼界。

img{512x368}

从“愚公移山”到“巧用代理”

Thibaut 最初的想法很直接:从一个种子项目列表开始,递归地克隆仓库、解析 go.mod。但他很快发现这条路行不通——克隆速度太慢,且严重依赖 GitHub。

于是,他将目光转向了 Go Modules 生态系统的核心枢纽 —— Go Proxy

  • index.golang.org:提供了自 2019 年以来所有发布模块的时间流。
  • proxy.golang.org:提供了每个模块版本的 go.mod 文件。

通过这两个公开 API,他成功地将整个 Go 生态的元数据“搬”到了本地,构建了一个全量的、不可变的本地缓存。

Neo4j:点亮数据之网

面对海量的依赖关系,传统的关系型数据库显得力不从心。Thibaut 选择了图数据库 Neo4j

  • 节点 (Node):代表一个具体的 Go 模块版本(例如 github.com/gin-gonic/gin@v1.9.0)。
  • 关系 (Relationship):代表 DEPENDS_ON(依赖于)。

通过简单的 Cypher 查询语句,复杂的依赖链变得清晰可见。例如,查询一个模块的所有传递性依赖(Transitive Dependencies),在 SQL 中可能需要复杂的递归 CTE,而在 Neo4j 中只需一个简单的 *1.. 语法即可搞定。

数据揭秘:Go 生态的真实面貌

经过数天的处理和导入,这个庞大的图谱终于呈现在眼前。让我们看看数据告诉了我们什么:

1. 绝对的王者:testify

在“被直接依赖次数”的榜单上,github.com/stretchr/testify 以 259,237 次的惊人数量遥遥领先,是第二名的两倍还多。这再次印证了测试在 Go 社区中的核心地位。

紧随其后的是:

  1. github.com/google/uuid (10w+)
  2. golang.org/x/crypto (10w+)
  3. google.golang.org/grpc (9.7w+)
  4. github.com/spf13/cobra (9.3w+)
  5. … …

2. “已归档”库的生命力:pkg/errors

最令人玩味的数据来自 github.com/pkg/errors。尽管这个库多年前就已宣布“归档”(Archived)并停止维护,且 Go 1.13 已内置了类似的错误包装功能,但数据却显示了截然相反的趋势:

  • 它的使用量不降反升!
  • 2019 年仅有 3 个依赖它的模块,而到了 2025 年,这个数字飙升到了 16,001

这揭示了软件生态中一个残酷的现实:旧习惯难改,且“足够好”的库拥有极其顽强的生命力。 哪怕官方已经提供了替代方案,开发者们依然倾向于使用他们熟悉的工具。

小结

Thibaut 的这个项目不仅仅是一次有趣的数据分析,它为我们观察 Go 生态提供了一个全新的上帝视角。

  • 平均依赖数:Go 模块平均拥有 10 个直接依赖。
  • 数据开源:作者不仅开源了爬虫代码 github.com/Thiht/go-stats,还大方地通过 BitTorrent 分享了 11GB 的 Neo4j 数据库转储文件。

你可以下载这份数据,自己在本地运行 Neo4j,去挖掘更多有趣的洞见。比如,看看你最喜欢的某个小众库,究竟被谁在使用?或者,去探索一下 Go 生态中那些隐秘的“单点故障”?

在这个由 4000 万个节点构成的宇宙中,还有无数的秘密等待被发现。

资料链接:https://blog.thibaut-rousseau.com/blog/the-most-popular-go-dependency-is/


你的依赖清单

testify 的霸榜并不意外,但 pkg/errors 的顽强生命力确实让人深思。在你的 go.mod 中,是否也有那些“虽然已归档,但真的很好用”的库?或者,你有什么私藏的冷门好库推荐?

欢迎在评论区晒出你的“宝藏依赖”! 让我们一起发现更多 Go 生态的秘密。

如果这篇文章让你对 Go 生态有了全新的认识,别忘了点个【赞】和【在看】,并转发给你的 Gopher 朋友!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

PostgreSQL 吞噬世界,MongoDB 起诉 Go 开源项目:2025 数据库年度盘点

本文永久链接 – https://tonybai.com/2026/01/08/databases-in-2025-a-year-in-review

大家好,我是Tony Bai。

数据库领域的“毒舌”,CMU教授 Andy Pavlo 再次发布了他的年度回顾(虽然这次是站在 2026 年初的回望)。2025 年对于数据基础设施是疯狂的一年:PostgreSQL 继续确立其霸主地位,引发了巨头间的收购狂潮;AI Agent 通过 MCP 协议正式接管数据库交互;而 Go 社区熟知的 FerretDB 则陷入了与 MongoDB 的法律泥潭。本文将为你深度梳理这份报告背后的技术趋势与行业信号。

img{512x368}

PostgreSQL 的统治:云巨头的“军备竞赛”

如果说 2021 年 Andy Pavlo 首次提出“PostgreSQL 正在吞噬数据库世界”,那么 2025 年则是这一预言的终极验证。PostgreSQL 不再仅仅是一个选项,它已经成为了行业标准,引发了云巨头之间近乎疯狂的并购与研发竞赛。

核心事件与技术演进

  • PostgreSQL v18 发布:终于引入了异步 I/O (Asynchronous I/O) 存储子系统,这意味着 Postgres 终于开始摆脱对操作系统页缓存(OS Page Cache)的依赖,向现代化 DBMS 架构迈出了关键一步。此外还增加了对 Skip Scans 的支持。
  • 天价收购案
    • Databricks 以 10 亿美元收购 Neon:Neon 是著名的“Serverless Postgres”开创者,其存算分离架构是现代云数据库的标杆。
    • Snowflake 以 2.5 亿美元收购 CrunchyData:为了不甘人后,Snowflake 也迅速补齐了其 Postgres 拼图。
    • Microsoft 发布 HorizonDB:作为回应,微软推出了自己的下一代 Postgres DBaaS。

对于后端和 Go 开发者而言,这意味着 PostgreSQL 协议已成为事实上的“通用语”。无论底层是 Aurora、AlloyDB 还是 Neon,应用层都只需通过标准的 pgx 或 lib/pq 驱动进行连接。掌握 Postgres 的深层特性和优化技巧,将成为未来五年内最具价值的技能之一。


MCP:AI Agent 时代的“中间件革命”

2025 年被定义为所有 DBMS 都支持 MCP (Model Context Protocol) 的一年。

什么是 MCP?

MCP 是由 Anthropic 提出,并随后被 OpenAI 采纳的一种标准化客户端-服务器 JSON-RPC 接口。它允许大语言模型(LLM)与外部工具和数据源进行交互,而无需编写定制的胶水代码。

  • 角色定位:MCP 服务器充当了数据库前的中间件。它向 LLM 暴露工具、数据和动作列表。
  • 工作流:LLM (MCP Client) -> MCP Server -> Database Query (SQL)。

Andy Pavlo 指出,除了官方实现外,还有数百个第三方的 MCP Server 实现。这对于 Go 开发者是一个巨大的机会:编写高性能、并发安全的 MCP 中间件是 Go 的拿手好戏

然而,这也带来了安全隐患。Pavlo 警告说,简单的代理只是将 MCP 请求翻译成 SQL,如果没有深度的内省和防护机制,AI Agent 可能会像“在应用里点了 18,000 杯水”一样,意外地摧毁数据库(比如 DROP DATABASE)。企业级 DBMS 开始内置 AI 防火墙,而开源生态则需要更多像 DBHub 这样提供查询限制和超时保护的中间件。


开源与法律:MongoDB v. FerretDB

这是 Go 社区最需要关注的法律纠纷。FerretDB 是一个用 Go 编写的开源项目,它提供了一个 MongoDB 兼容的代理层,后端使用 PostgreSQL 存储数据。这让用户可以用 Mongo 的驱动操作 Postgres。

诉讼焦点

  • 起因:MongoDB Inc. 向 FerretDB 发出停止侵权函,并在 2025 年 5 月正式提起联邦诉讼。
  • 指控:侵犯专利、版权、商标,以及违反 MongoDB 的文档和线协议规范的许可。MongoDB 特别针对 FerretDB 声称自己是“Drop-in replacement”(直接替换)这一点,认为其不仅误导开发者,还损害了 MongoDB 的声誉。
  • 背景:微软也将其 MongoDB 兼容的 DocumentDB 捐赠给了 Linux 基金会,但这似乎没有引发同样的法律反击,可能是因为巨头间的相互制衡。

警示

这一案件可能会成为 API 兼容性实现的法律判例。对于那些致力于编写“兼容层”或“协议转换器”的 Go 开发者来说,这是一个危险的信号:模仿专有软件的 API 和线协议,可能会面临越来越大的法律风险。


文件格式战争:Parquet 的挑战者们

在数据工程领域,Parquet 格式已经统治了近 15 年。但在 2025 年,为了适应现代硬件(NVMe SSD, GPU)和 AI 负载,新的挑战者涌现。

  • 挑战者联盟SpiralDB 的 Vortex(已捐赠给 Linux 基金会)、CWI 的 FastLanes、以及学术界的 F3 和 AnyBlox。
  • 核心痛点:现有的 Parquet 生态过于碎片化。Pavlo 的团队分析发现,94% 的 Parquet 文件仍在使用 2013 年的 v1 特性。
  • 未来趋势F3 格式(由 CMU, 清华大学等合作)提出了一种有趣的思路——在文件中嵌入 WASM (WebAssembly) 解码器。这意味着只要读取端支持 WASM,就可以解析任何自定义编码的数据,无需升级读取器本身。

行业大洗牌:并购与消亡

  • IBM 的野心:收购了 DataStax ($3B) 和 Confluent (Kafka 商业化公司),试图在数据流和 NoSQL 领域占据高地。
  • 向量数据库的退潮:随着所有主流 DBMS(Postgres, Oracle, Mongo)都内置了向量索引,单纯的“向量数据库”公司生存空间被挤压。Pinecone 正在寻求被收购,而 MyScaleDB 已经关闭。
  • GPU 数据库的黄昏Voltron Data 的倒闭和 HeavyDB 被 Nvidia 收购,似乎宣告了通用 GPU 数据库作为独立商业模式的终结。

总结与展望

Andy Pavlo 的这篇回顾虽然笔调幽默甚至带有讽刺,但其揭示的技术趋势却是严肃的:

  1. 架构趋同:存算分离、基于日志的架构(Log-based architecture)已成为云数据库的标配。
  2. AI 融合:数据库不再只是被动存储,而是通过 MCP 和内置向量能力,主动融入 AI Agent 的工作流。
  3. Go 的角色:在基础设施层(Docker/K8s 之后),Go 正在成为连接 AI 与数据的关键胶水语言(MCP Server, Proxy, 协议转换器)。

对于 Gopher 来说,关注 PostgreSQL 的协议生态、学习构建安全的 MCP 服务、并警惕开源协议的法律边界,将是 2025 年(及以后)的重要课题。

资料链接 – Databases in 2025: A Year in Review by Andy Pavlo


你的数据库“军火库”

数据库的世界正在发生剧变。在你的项目中,PostgreSQL 是否已经成为了默认选择?你如何看待 AI Agent 直接操作数据库的未来?

欢迎在评论区分享你的选型思考或对 FerretDB 事件的看法!让我们一起看清趋势,少走弯路。

如果这篇文章为你打开了数据库领域的新视野,别忘了点个【赞】和【在看】,并转发给你的架构师朋友!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats