之前在 v 站其实刷到过不少讨论的,包括很多互联网公司特别用 java 的,微服务不允许连接查询和子查询,需要数据展示的全部在应用层做(内存中操作),也有很多反驳的说 mysql 现在优化的很好,可以联合查询和子查询。 等等。 其实我想问的是无论是应用层还是数据库层都是服务器资源,不是一样重要吗
1
Jinnrry 16 天前 via iPhone
哪个不方便扩容哪个就宝贵。现在微服务架构下,业务服务器都可以平滑扩容,而数据库作为有状态服务,及时有 dbproxy 层,底层扩容也十分繁琐。
因此数据库资源更宝贵。 大家说可以连表,可以子查询,是因为最近今年 MySQL 优化越来越好了,只要你 SQL 和索性设置没问题,这些查询并不耗多少资源,因此可以用。数据库资源再宝贵,那也是拿来用的,cpu 天天空着又不能创造收益 |
2
xiaogu2014 16 天前
```微服务不允许连接查询和子查询```
不清楚哪个公司有这个规定。。那这样的话别用关系型数据库好了。 都应该用 nosql 。。 |
3
adoal 16 天前
我非常讨厌一些互联网行业“毕业”后做信息化的人以及盲目追随互联网布道的原生信息化人。
|
4
COW 16 天前 via Android
主流做法就是这样的,微服务之间交互都是 API 优先,各个应用基本都有自己的数据库,也可能是异构库,通过应用层处理更灵活,各个组成员不用关心别人的库,只要关心 API 设计就好了,至于性能倒不是主要原因吧,至于为什么直接禁止,可能是方便管理吧。
|
5
soul11201 16 天前 via Android
先看目标,再看公司约束及增长趋势的预测,如果资源都能顶住怎么方便怎么来。
|
6
spritecn 16 天前
应用层加资源更方便,可控性更强,加 pod 或加机器还是比升级数据库方便一点
|
7
spritecn 16 天前
还有一个,写代码里可读性和逻辑性更强,之前看见过一个 sql 有 50 行的 xml,这在大数据那可能很正常,但是在业务这边就很难受
|