Go 开源说第二期:GORM 剖析与最佳实践

試著忘記壹切 提交于 2021-01-01 18:41:27

写在前面

随着Go在中国越来越多的应用场景,我们中国的Gopher开发的开源项目也越来越多,目前在github上面有大量的Go写的开源项目,但是很多时候一个好的项目让别人获知,同时让大家了解背后的设计设计原理,其实是很困难的一件事情。

基于这样的背景,我们GoCN社区推出这个《Go 开源说》,每两周会播出一期。希望通过这样的平台帮助到我们开源的作者,有一个平台去推广我们的开源项目,第二说说背后的设计原理和理念,产品优越性等。第三让我们用户可以了解到更多好玩有用的项目,避免自己造轮子重复发明,当然也希望通过这些分享让大家学习到每一个开源项目背后的设计理念,拥抱开源,做出自己的产品。

—— Asta

本期开源先锋

张金柱 https://github.com/jinzhu

  • 就职于字节跳动基础架构语言团队

  • 目前从事字节跳动的性能分析、优化及 GORM 开发相关工作

关于 GORM

 https://github.com/go-gorm/gorm

设计简洁、功能强大、自由扩展的全功能 ORM

设计原则

  • API 精简、测试优先、最小惊讶、灵活扩展、无依赖  可信赖

功能完善

  • 关联:一对一、一对多、单表自关联、多态关联;Preload、Joins 预加载;关联模式

  • 事务:嵌套事务, Save Point

  • Hooks、Callbacks 自由扩展

  • 多数据库、读写分离、Prometheus、Prepared Stmt、查询优化器、批量数据处理、代码共享、子查询、DryRun

  • SQL Builder、Smart Migration、复合主键、自定义类型 (JSON等)、SQL 表达式查询创建更新、虚拟字段…

  • 真 • 跨数据库兼容

本期精彩看点

看点1:GORM 项目初衷与发展历程

GORM 最开始源于 2013 年,当时在做一个支付系统,当时 Golang 的生态圈不够成熟,没找到符合自己需求的库,然后拼 SQL 拼烦了,然后自己花了一个周未的时间做了第一版,帮项目顺利上线。

看点2:GORM 项目的优越设计理念

GORM 遵从了 API 精简,测试优先,最小惊讶,自由组合扩展,无依赖的设计理论,争做一个健壮的可信赖的开源产品。

看点3:GORM 项目在字节跳动内部的实践应用

GORM 在字节跳动的应用很广泛,公司内部社群比 GORM 所有的微信群加起来的人数多的多,现在广泛应用在字节跳动的上万个 Go 的微服务当中。

如何提前互动

请在评论区留下你对于 GORM 项目感兴趣的问题,我们会统一收集在直播中进行答疑~

如何报名

查看下列截图你是否在任意的Gopher群里,如果已经加入任一Gopher群,只要在31日关注群内动向,我们会在晚上 20:00 准时开启直播

如果还没找到组织,请扫码入群,届时我们会在群内开启直播。

截止时间:12月31日晚18:00

如果你是一位醉心开源的 Gopher,拥有自己的开源项目和故事,欢迎点击“阅读原文”填写问卷进行报名,小编会及时联系你哦~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!