为何有些人不喜欢使用 SQL 方言? 尤其是喜欢用 ORM 的后端工程师
像是 oracle 的 pl/sql,sql server 的 t-sql
最近看一个新同事的code (有3年资历)
明明可以使用 t-sql 设定变数的方式,一个 sql script 解决
但却坚持要用 python + ansi sql 解决...
他说 : 「这样以后换数据库才比较方便」
我个人观点是,中途换数据库情况在我工作几年情况完全没遇过,觉得这样是 "过度设计" 了
并且个数据库厂商提供的方言,很多时候可以提供更高速度、方便的工具 "不应该不使用"
一般来说都是将数据库作为存储和查询工具,很少会有让数据库进行稍微复杂的计算(其实数据库支持各种计算),而是将数据从数据库中查询出来后,在应用层做计算;这样做是出于很多原因的,不仅仅是因为日后数据库迁移方便
所以,普通sql都这样用了,怎么还会使用sql方言呢
但有时候查询完塞在内存,在进行计算,速度比起在数据库用方言解决慢很多
@我问故我在: 如果数据库里面查到要处理的数据有10G,
1.使用数据库进行计算后返回结果(注意,这里一般是单机计算)
2.将数据从数据库取回到应用层,在应用层让多台机器并行计算;
这两种方式,你绝得哪种快呢?
@寻觅beyond: 这样的框架设计不就要牵扯到分布式
这对一般项目来说,是否过度设计?
@我问故我在: 每种设计,都是在某个设计的前提下进行改进,也就是说每种设计也都有优缺点,这是句废话,但也没毛病。
且不提框架设计,你就说,你用方言sql的一个功能,就好比用普通sql写了一个函数或者过程,这样在后期的维护过程以及排查问题时都会有影响。
数据库换的几率不高, 能简单解决的就不要查询出来手工搞,原因
1.SQL的可读性比大量的FOR,IF好很多,且易于维护。
2.数据库的性能比自己手撸的性能好,且能自动处理缓存。
多台机器并行计算严重降低吞吐量,实际使用中一般不会这样做。