惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
S
Secure Thoughts
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
宝玉的分享
宝玉的分享
J
Java Code Geeks
博客园 - 司徒正美
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
S
SegmentFault 最新的问题
博客园 - 聂微东
Jina AI
Jina AI
C
CERT Recently Published Vulnerability Notes
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
P
Proofpoint News Feed
Stack Overflow Blog
Stack Overflow Blog
I
Intezer
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
I
InfoQ
S
Security Affairs
B
Blog RSS Feed
L
Lohrmann on Cybersecurity
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Help Net Security
T
Tailwind CSS Blog
C
Check Point Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
Recorded Future
Recorded Future
Martin Fowler
Martin Fowler
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
Blog — PlanetScale
Blog — PlanetScale
Cisco Talos Blog
Cisco Talos Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com

博客园 - 小草

mac系统及xcode使用的SVN客户端安装升级 快速升级App支持iOS6及iPhone5的4寸屏幕 尝鲜安装iOS6及新特性 Delphi处理Http请求自定义Header 浅谈项目与产品的区别 xcode4.2开发最新的ios5应用,分享snow版本下载地址 xCode 4.X 免证书真机发布及调试 第一个iPhone版本应用发布 【iPhone开发】说说Xcode4中xib绑定的原理 【iPhone开发】XCode4开发iPhone应用的体验 多机多屏显示器实战 业务逻辑实现方式的讨论:存储过程 good or bad? 浅析SAAS数据模型设计(Oracle) 安装VS2010中文版初体验 QQ邮箱里可以定阅博客园的文章了 升级到NVelocity1.1版本 解决Office 2010打开文件提示“文件已损坏,无法打开。”的问题 突破电信3G宽带对网页浏览的上网限制 华为EC1261使用小记
存储过程与业务类实现业务的差异比较
小草 · 2010-08-04 · via 博客园 - 小草

以下比较不太全面,纯粹是个人的理解。可能是针对前一篇文章的补充与说明

1、批量数据的处理比较

业务逻辑:单位A部门划转到B部门,业务规则是把A部门的100人的关联单位改为B部门,同时在人员岗位变化子表里增加一条变动记录。

业务实现:

1)存储过程实现(SP实现)(两个SQL语句)

insert into 岗位变化子表(变化前部门、变化前岗位、变化后部门、变化后岗位、生效时间、操作人、操作时间) select A,岗位,B,岗位,sysdate,当前登录用户,sysdate from 员工表 where 部门ID=A;--完成插入100条子表的数据

update 员工表 set 部门ID=B where 部门ID=A; --更新员工的部门关联

commit; --最后提交,SP本身就开启了事务机制,所以可以放心操作。

2)业务类实现1(符合面向对象的原则)

获得A部门员工对象,一般是100个员工对象的Collection,即生成的SQL语句是把所有的员工表的字段都查询出来,然后循环进行员工对象属性的变更与保存、子对象的创建与保存等业务。

3)业务类实现2(有点不太符合面向对象的原则,但效率肯定比前面一种高)

按SP方式执行SQL语句。当然要注意开启事务处理,否则可能会产生垃圾数据哟。

当然可能还有除了这三种之外的实现方式,但这三种应该是最常见的了。其它的内容这里就不展开说了。希望非专业人士可以看明白。专业人士可以自行计算一下数据库连接的次数及需要传输的数据量。

需求变更:增加操作IP的记录

所有都要做的事情:增加【岗位变化子表】数据表字段:操作IP

1)SP调整

增加参数IP,修改第一条insert语句即可。

关联修改:调用存储过程方法重新调整。重新编译发布

2)业务实现1

修改岗位变化子表的实体类。(一般是重新生成即可)

修改业务逻辑类

重新编译发布

3)业务实现2

修改岗位变化子表的实体类。(一般是重新生成即可)

修改SQL语句

重新编译发布

2、数据统计类

业务逻辑:定时(每小时或每天)更新用户排行榜(如积分排行榜),假设用户积分数据8千万条数据。

业务实现:SP的方式

创建一个Job队列执行设定的存储过程,把统计的结果存到积分排行榜的数据表里。

适应需求变化:统计的规则可能经常变化,特别是积分系统的调整也是非常频繁的(可能一周就会有一次,特别是项目上线前期),存储过程可以很快的修改测试与部署。不需要指定专门的时间去停止所有的Web服务器更新应用来满足需求的变化。

先写这些吧,写东西太耗时间了。还是等压力测试的数据出来再做一些分析吧。