mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
ch5-5-fix typos
This commit is contained in:
parent
75ff1c9924
commit
f4e2db5a64
@ -123,7 +123,7 @@ func main() {
|
|||||||
>>> b.save()
|
>>> b.save()
|
||||||
```
|
```
|
||||||
|
|
||||||
完全没有数据库的痕迹,没错 ORM 的目的就是屏蔽掉DB层,实际上很多语言的 ORM 只要把你的 class/struct 定义好,再用特定的语法将结构体之间的一对一或者一对多关系表达出来。那么任务就完成了。然后你就可以对这些映射好了数据库表的对象进行各种操作,例如 save,create,retrieve,delete。至于 orm在背地里做了什么阴险的勾当,你是不一定清楚的。使用 ORM 的时候,我们往往比较容易有一种忘记了数据库的直观感受。举个例子,我们有个一个需求:向用户展示最新的商品列表,我们再假设,商品和商家是1:1的关联关系,我们就很容易写出像下面这样的代码:
|
完全没有数据库的痕迹,没错 ORM 的目的就是屏蔽掉DB层,实际上很多语言的 ORM 只要把你的 class/struct 定义好,再用特定的语法将结构体之间的一对一或者一对多关系表达出来。那么任务就完成了。然后你就可以对这些映射好了数据库表的对象进行各种操作,例如 save,create,retrieve,delete。至于 orm在背地里做了什么阴险的勾当,你是不一定清楚的。使用 ORM 的时候,我们往往比较容易有一种忘记了数据库的直观感受。举个例子,我们有个需求:向用户展示最新的商品列表,我们再假设,商品和商家是1:1的关联关系,我们就很容易写出像下面这样的代码:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# 伪代码
|
# 伪代码
|
||||||
@ -173,7 +173,7 @@ orders := orderModel.GetList(where, limit, orderBy)
|
|||||||
|
|
||||||
写 sql builder 的相关代码,或者读懂都不费劲。把这些代码脑内转换为 sql 也不会太费劲。所以通过代码就可以对这个查询是否命中数据库索引,是否走了覆盖索引,是否能够用上联合索引进行分析了。
|
写 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 不高,查询不复杂等等。
|
另外在一些本来也不需要DBA介入的场景内,使用 sql builder 也是可以的,例如你要做一套运维系统,且将 mysql 当作了系统中的一个组件,系统的 QPS 不高,查询不复杂等等。
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user