当前位置:首页 > 网络科技 >

阿里巴巴java规范存储过程

来源:原点资讯(www.yd166.com)时间:2023-04-22 08:05:43作者:YD166手机阅读>>

看到《阿里巴巴Java编码规范》有这样一条

阿里巴巴java规范存储过程,(1)

关于这条规范,我说说我个人的看法

用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术牛逼,就视他们的手册里的每一项规范为圣经, 盲目的去遵循。

对于手册中的这项规范,我觉得使用MySql的程序员认同占多数, 而使用SQL Server的程序员反对占多数。 原因在于MySQL对SQL编程和复杂查询性能优化的支持实在太烂。不过从手册的上下文来判断这条规范应该就是针对MySQL的。

阿里巴巴java规范存储过程,(2)

记得MySQL支持存储过程是5.0版本开始的, 那时候已经是2006年了,而从新版本发布到用户全面升级,势必要延迟几年, 而同时期的Sql Server2005和Sql Server2008的Transact-SQL编程已经相当成熟,不是MySQL能够追赶的上的。 而业务逻辑这个东西,可以放在SQL端实现也可以放在语言端实现,恰恰MySQL对于SQL编程支持的不完善,造成使用MySql数据库的程序员都偏向于把逻辑放在语言中实现,加上互联网的蓬勃发展,MySQL使用场景越来越广,此消彼长, SQL编程技术也就越来越不招人待见。

然而,这并不能表明SQL编程无可取之处。

在微软技术栈程序员中,存储过程绝对神器级的解决问题手段,不管是存储过程, 视图、触发器、自定义函数这些都是极常用的技术。而这些在MySQL中基本上是见不到的,在开发基于MySQL的项目中,要是有人胆敢使用此类技术,绝对会被视为异端, 并毫不留情的遭受打压。在微软技术栈中,优先推荐将业务逻辑使用Transact-SQL编程实现,封装在数据库中, 供外部.net程序调用。有的项目通过这种方式实现,外部的程序就是个空壳子,所有复杂的逻辑全在数据库里面。 拿MVC模式打比方,model层的内容全在数据库里, 程序中只剩Controller和View层的内容, 这会让人产生一种编程语言没鸟用的错觉。 但是这样做是有好处的。

首先,很多人说存储过程性能不行,其实也不一定, 尤其是Sql Server。大规模高并发分布式场景下SQL编程不占优势,但是并非所有应用都是如此的, 在普通应用场景下,SQL编程的性能优势就体现出来了。 因为编程语言对数据库的操作最终都会转化为SQL语句传递给数据库执行, 那在具备优秀的SQL编程能力的情况下,通过SQL编程实现业务逻辑显然比通过程序语言实现更底层, 粒度更细, 和数据库本身结合的更紧密,更利于性能调优。 虽然原本在程序端的计算量被转移至了数据库端, 程序端压力小, 数据库端压力大, 但是两者相加的总压力却变小了,因为把逻辑放在程序端实现,无法百发百的压榨数据库性能,从而导致资源浪费。 通过SQL编程实现业务逻辑, 数据库压力虽然大了,却可把原来属于程序端的服务器资源划给数据库端,这样在总体上来说资源不但不浪费,而且还节省了。 通过数据库实现业务逻辑的性价比更高。再者,大多数程序的业务逻辑无非是对数据库的增删查改,没有谁比SQL更适合干这个事情,包括编程语言,因此用SQL编程来实现业务逻辑最合适不过。 不要说什么SQL编程不支持面向对象,无法解决复杂问题,先不说大多数项目没有到达复杂的程度, 现在主流的ORM框架的实现都是不符合理论的,谁说关系表可以映射为对象的,荒唐。况且,SQL语句面向结果编程符合的函数式编程模式,而函数式编程是现代编程界的一股清流,牛逼之处不言而喻。 即使真碰到什么问题是SQL编程无法解决的,也可以把这部分问题提取出来通过程序实现, 但我相信这样的问题总是占少数的。

其次, 把逻辑封装在存储过程里,有一个好处是改动方便。 改程序需要重新编译、停服、发布, 存储过程是可以热更新的, 能减小发布程序所带来的影响。在以SQL Server为基础的程序中,光上面说的这些也足够成为用SQL编程实现业务逻辑的理由了。但在MySQL下是不成立的, 我曾经见过一个.net程序员强行把MySQL当SQL Server使,结果项目后期维护跟翔一样臭。

这个Java手册是从阿里巴巴的业务场景中提炼出来的, 照着它练能做出很厉害的项目来。但是在整个软件开发行业,不是所有的企业都是互联网公司, 即使在整个互联网行业中,也不是所有的公司都是阿里巴巴,不是所有的项目都要应对巨量请求,不是所有的项目都使用MySQL数据库。 诚然, 这个手册的规则是正确无疑的,可就像韦小宝说的,跟小皇帝打架用的着花几十年时间练化骨绵掌吗,花几小时练挤奶龙爪手就足够了。 所以, 是不是用存储过程还是视实际情况而定,一票否决是不明智的。

还有,那些说存储过程难以调式难以修改的, 要不就是没用对数据库, 要不就是SQL编程能力不足。以我个人的经验来说,存储过程是个好东西,尤其在SQL Server下。如果数据库仅仅是用来当存储数据的仓库,那像Oracle、IBM、Microsoft用的着费劲把它们产品的功能做这么强大吗, 那些已故的数库领域的先驱都要死不瞑目了。

,

栏目热文

阿里镜像和快照区别(阿里云快照怎么样)

阿里镜像和快照区别(阿里云快照怎么样)

本文以云原生为时代背景,介绍了阿里云块存储快照服务如何基于高性能 ESSD 云盘提升快照服务性能,提供轻量、实时的用户体...

2023-04-22 08:33:59查看全文 >>

阿里地址异常(阿里处理地址异常很慢)

阿里地址异常(阿里处理地址异常很慢)

老板:王总你来了,最近生意怎么样啊?王总:哎呀,别提了,我的企业列入严重违法失信名单了,现在不知道怎么才好,你给出出主意...

2023-04-22 08:05:54查看全文 >>

阿里巴巴做的分布式存储(阿里巴巴数据存储方式有哪几种)

阿里巴巴做的分布式存储(阿里巴巴数据存储方式有哪几种)

5月26日晚,阿里巴巴集团公布2022年第四季度及2022财年业绩,中国市场消费者突破10亿里程碑,海外市场消费者达3....

2023-04-22 07:54:25查看全文 >>

阿里云开放存储(阿里云现有存储空间)

阿里云开放存储(阿里云现有存储空间)

两个核心信息:其一、阿里巴巴旗下所有产品都将用大模型全面改造;其二,阿里云将进行史上最大力度降价,降价并非简单粗暴价格战...

2023-04-22 08:18:31查看全文 >>

阿里数据存在哪里(阿里数据分析在哪里)

阿里数据存在哪里(阿里数据分析在哪里)

最近两年,华为、苹果、腾讯、阿里等全球知名互联网科技企业都把数据放在贵州。腾讯则是在贵州的大山里面挖了个山洞,用来放置...

2023-04-22 08:02:28查看全文 >>

sd卡处于禁止写入状态怎么办(sd卡无法写入怎么办)

sd卡处于禁止写入状态怎么办(sd卡无法写入怎么办)

最近,许多红米3用户反映,有时手机应用提示无法读取到外置存储数据。这然道是bug吗?不管怎么说,该问题确实给大家使用造成...

2023-04-22 08:18:18查看全文 >>

阿里云对象存储和镜像一样吗(阿里云对象存储为什么那么便宜)

阿里云对象存储和镜像一样吗(阿里云对象存储为什么那么便宜)

导语在腾讯云、阿里云或其他云计算服务平台上配置云主机的时候,一般都会有一个选择服务器镜像的步骤,镜像服务也是云计算的一个...

2023-04-22 08:06:35查看全文 >>

阿里数据存储治理(阿里的数据中心安全措施)

阿里数据存储治理(阿里的数据中心安全措施)

导读:随着大数据的深入发展,数据越来越成为公司的重要资产,但围绕数据流的全链路管理工作细致且技术复杂,数据的治理越来越成...

2023-04-22 08:31:05查看全文 >>

2万5的工资到手多少(基本工资5000到手多少)

2万5的工资到手多少(基本工资5000到手多少)

2018年我们进行了个人所得税法的修改,起征点有3500元上调至5000元,相应个人所得税的税阶大幅扩大,由原先的按月征...

2023-04-22 08:25:13查看全文 >>

月入一万是什么层次(月入一万在中国是什么水平)

月入一万是什么层次(月入一万在中国是什么水平)

头条热榜今天看到一个热榜,在中国月收入1万是个什么样的水平?对很多人来说,这可能是哪儿痛就朝哪儿戳啊,引起了很多人的共...

2023-04-22 08:32:06查看全文 >>

文档排行