1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00

Merge pull request #328 from fuwensun/pr5-5-1f

ch5-5-fix typos
This commit is contained in:
chai2010 2018-08-21 22:34:25 +08:00 committed by GitHub
commit 02b4800bdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -123,7 +123,7 @@ func main() {
>>> b.save()
```
完全没有数据库的痕迹,没错 ORM 的目的就是屏蔽掉DB层实际上很多语言的 ORM 只要把你的 class/struct 定义好,再用特定的语法将结构体之间的一对一或者一对多关系表达出来。那么任务就完成了。然后你就可以对这些映射好了数据库表的对象进行各种操作,例如 savecreateretrievedelete。至于 orm在背地里做了什么阴险的勾当你是不一定清楚的。使用 ORM 的时候,我们往往比较容易有一种忘记了数据库的直观感受。举个例子,我们有个一个需求向用户展示最新的商品列表我们再假设商品和商家是1:1的关联关系我们就很容易写出像下面这样的代码
完全没有数据库的痕迹,没错 ORM 的目的就是屏蔽掉DB层实际上很多语言的 ORM 只要把你的 class/struct 定义好,再用特定的语法将结构体之间的一对一或者一对多关系表达出来。那么任务就完成了。然后你就可以对这些映射好了数据库表的对象进行各种操作,例如 savecreateretrievedelete。至于 orm在背地里做了什么阴险的勾当你是不一定清楚的。使用 ORM 的时候我们往往比较容易有一种忘记了数据库的直观感受。举个例子我们有个需求向用户展示最新的商品列表我们再假设商品和商家是1:1的关联关系我们就很容易写出像下面这样的代码
```python
# 伪代码
@ -173,7 +173,7 @@ orders := orderModel.GetList(where, limit, orderBy)
写 sql builder 的相关代码,或者读懂都不费劲。把这些代码脑内转换为 sql 也不会太费劲。所以通过代码就可以对这个查询是否命中数据库索引,是否走了覆盖索引,是否能够用上联合索引进行分析了。
说白了 sql builder 是 sql 在代码里的一种特殊方言如果你们没有DBA研发有自己分析和优化 sql 的能力,或者你们公司的 dba 对于学习这样一些 sql 的方言没有异议。那么使用 sql builder 是一个比较好的选择,不会导致什么问题。
说白了 sql builder 是 sql 在代码里的一种特殊方言如果你们没有DBA研发有自己分析和优化 sql 的能力,或者你们公司的 dba 对于学习这样一些 sql 的方言没有异议。那么使用 sql builder 是一个比较好的选择,不会导致什么问题。
另外在一些本来也不需要DBA介入的场景内使用 sql builder 也是可以的,例如你要做一套运维系统,且将 mysql 当作了系统中的一个组件,系统的 QPS 不高,查询不复杂等等。