【飞秋】存储过程与业务类实现业务的差异比较

数据库差异分析与同步工具的全面比较 htmltable {th, td {th {pre {简介:本文探讨了如何使用专业工具比较和同步两个数据库之间的结构和数据差异,以确保多环境下的数据一致性。介绍了数据库同步工具的关键功能,包括结构比较、数据比较、差异报告、同步操作、版本控制集成、安全性和权限管理以及跨平台支持。强调了定期同步数据库的重要性,并指出这些工具对于管理多环境数据库的一致性至关重要。 阅读详情

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

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服务器更新应用来满足需求的变化。

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

关注技术文章飞秋:http://www.freeeim.com/,24小时专业转载。

数据库差异比较:管理与同步的策略 数据一致性指的是在一个数据库系统中,事务执行前后数据的逻辑状态是正确的。在数据库中执行的事务是一组有序的操作,这些操作要么全部完成,要么全部不执行,以保证数据的原子性。数据一致性是数据库正常工作的前提,它确保了数据在并发环境下仍能保持预期的状态,从而保证业务逻辑的正确性。数据库在企业的IT架构中占据着核心地位。随着企业信息化的发展,数据库的版本迭代和环境变更变得频繁,这就需要一套高效且可靠的工具来帮助DBA(数据库管理员)发现和解决数据库之间的差异,确保数据的一致性和完整性。 阅读详情

相关推荐

银行活期存储系统C++

详细的课程设计文档 满足各类学生的要求 仅供参考

存储过程概述

存储过程(Stored Procedure)   可以包含逻辑判断的sql语句集合。   是经过预编译,存在于数据库中。 通过调用指定存储过程的名字(可有参,可无参)来执行。   优点: 简化了复杂的业务逻辑,根据需要可重复使用屏蔽了底层细节,不暴露表信息即可完成操作降低网络的通信量,多条语句可以封装成一个存储过程来执行设置访问权限来提高安全性提高执行效率,因为它是预编译以及存储在数据

wan23333的博客 379

多思计算机组成原理实验:模型机课程设计

计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰

Nick的博客 2万+

存储过程与业务类实现业务的差异比较

以下比较不太全面,纯粹是个人的理解。可能是针对前一篇文章的补充与说明 1、批量数据的处理比较 业务逻辑:单位A部门划转到B部门,业务规则是把A部门的100人的关联单位改为B部门,同时在人员岗位变化子表里增加一条变动记录。 业务实现: 1)存储过程实现(SP实现)(两个SQL语句) insert into 岗位变化子表(变化前部门、变化前岗位、变化后部门、变化后岗位、生效时间、操作人、操作...

weixin_33937778的博客 151

直线电机驱动技术原理与应用解析

直线电机作为直接电能-直线运动转换装置,其核心原理基于电磁感应定律和洛伦兹力公式。通过三相交流电在定子绕组中产生行波磁场,与动子永磁体相互作用实现精准推力控制。相比传统旋转电机传动系统,直线电机具有零传动间隙、高动态响应(加速度可达10g)和微米级定位精度等技术优势,这使其成为半导体光刻机、精密数控机床等高端装备的关键驱动部件。现代直线电机驱动单元通常采用三环控制架构(电流环、速度环、位置环),配合SiC功率器件和高分辨率光栅反馈,实现纳米级运动控制。随着模块化设计和直接冷却技术的发展,直线电机正朝着更高功

weixin_26802933的博客 260

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 481

存储过程实现业务与java分层实现业务比较

<br />存储过程实现业务与java分层实现业务高手给个比较。

redsun1257的专栏 467

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1444

使用存储过程(带游标)代替Java代码实现业务功能(MySQL)

场景 之前在一个项目中遇到过一个统计功能,需要根据各种条件进行统计。然后采用了Java实现,即是将需要的数据直接从数据库中查询出来,然后用Java进行各种加工处理。实现是实现了但是代码却很复杂、可读性极差。于是,想办法直接在数据库中进行加工处理(使用存储过程 ),然后将处理后的数据预先存入表中(新建)。业务上需要统计的时候,就直接调用存储过程,再从存有处理后的数据的表中查询数据。 Java实现及SQL实现对比 客户端(Java)实现 /** * @description 检查单统计service实现

老照片 825

使用 STM32F7 和 TensorFlow Lite 开发低功耗人脸识别设备

我们讨论了 STM32F7 的特点和能力,TensorFlow Lite 在 STM32F7 上的应用,以及一些降低功耗的优化技术。- 准备模型:选择合适的人脸识别模型,在 TensorFlow 中进行训练和导出,并使用 TensorFlow Lite 转换为适用于 STM32F7 的量化模型。请注意,上述代码仅展示了如何加载和运行 TensorFlow Lite 模型的方法,实际应用中需要集成人脸检测和识别模型,并根据实际需求进行相应的输入和输出处理。结合这两个工具,我们可以开发出低功耗的人脸识别设备。

weixin_66608063的博客 2589

手把手教你用Gazebo+ROS搭建智能小车机械臂系统(含完整配置文件)

本文提供了一份详细的实践指南,手把手教你使用Gazebo和ROS搭建智能小车机械臂仿真系统。内容涵盖从URDF/Xacro模型设计、Gazebo控制器配置到ROS话题通信与系统集成的完整流程,并提供了可复用的配置文件与调试技巧,帮助开发者快速构建并控制一个功能完备的移动操作机器人平台。

sugar的博客 973

编程语言 vs 存储过程:业务代码实现方式的比较分析

本文对比了业务逻辑实现的两种方式:编程语言和存储过程。存储过程在事务处理效率和数据一致性方面表现优异,但修改困难、扩展性差,难以满足多租户定制需求。编程语言实现虽然事务效率略低,但具有更好的可修改性、系统扩展性和客户定制能力,支持现代DevOps流程和微服务架构。建议核心交易场景使用存储过程,多数业务逻辑采用编程语言实现,并利用策略模式等支持多租户定制。未来趋势将更偏向可配置的编程语言实现方式。

nbsaas-boot基于Request-Response的企业级快速开发框架 800

IAR9.4报错之编码方式

IAR9.40编码方式错误导致的报错

qq_36081075的博客 2627

MySQL:尽量不要用存储过程封装业务逻辑

本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用。而是关于:“业务逻辑是不是要封装在存储过程中实现,这样子php、java等就是调用存储过程”。 业务逻辑,通俗说就是:比如要取数据的操作,取出会员编号为x的数据,原来我们一般是封装成函数,或者直接编写sql语句查询。现在是交给数据库的存储过程去完成。 在一家公司,老板请工商银行的一个技术总监(老板自己说是总监,...

OceanStar的博客 1411

【数据集5】土地利用类型数量预测数据LUH2

简介土地利用类型数量预测数据LUH2

WW、forever的博客 4549

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL vs Oracle 存储过程终极对决:核心差异与实战应用全攻略

🔍🔍🌟🌟在数据库开发领域,存储过程作为一种预编译的数据库对象,能够将复杂的业务逻辑封装在数据库层面执行,极大地提升了数据处理效率和应用程序的安全性。MySQL 和 Oracle 作为两款主流的关系型数据库管理系统,它们的存储过程既有相似之处,也存在诸多差异。本文将深入剖析 MySQL 和 Oracle 存储过程的细节,并对二者进行全面对比。

weixin_68934883的博客 1255

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DBeaver 对象比较指南:让比较报告只显示差异

当你需要确认两套环境的表结构是否一致,或者检查多个数据库里的同类对象有无漂移时,DBeaver 的对象比较功能会一次性输出完整报告。对象多、属性多的时候,报告里大部分内容是"两边一样",真正的差异反而难找。打开"只显示差异"开关,再配合跳过系统对象等选项,报告就能收敛到只剩需要核对的行。 ## 对象比较适合什么:结构核对,不是逐行数据 先对齐能力边界,避免用错地方: - **适合**:比较同

gitblog_01029的博客 768

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SQLiteStudio数据库比较功能:轻松找出表结构差异

在数据库开发与维护过程中,比较不同版本的表结构差异是一项高频需求。无论是团队协作中的 schema 同步、版本升级前的兼容性检查,还是迁移验证,手动对比 SQL 脚本或表结构都容易出错且效率低下。SQLiteStudio 作为一款功能丰富的 SQLite 图形化管理工具,内置的数据库比较功能能够自动检测表结构差异,直观展示修改点,显著提升开发效率。本文将深入解析该功能的实现原理、操作流程及实战应用...

gitblog_01045的博客 957

Oracle比较两库或用户下对象结构、表数据差异

开发需要比对生产与测试对象结构差异,将生产环境对象结构同步至测试环境,同时保留测试环境数据。包括表、视图、存储过程等约两千个,人工比对肯定不现实,搜了一下原来plsqldev就有这个功能。 一、 对比对象结构差异 左下方选择目标会话,例如源会话是A用户,目标会话是B用户,对比后会生成将B中对象改为和A中一样的sql,不要填反。 为避免对比影响生产环境,这里将生产环境对象结构dump到测试...

Hehuyi_In的博客 7019

rsuite Image 组件圆形图片(circle)用法详解:从示例到源码实现

本文以 rsuite 组件库中 Image 组件的圆形图片(circle)用法为主线,围绕 [circle.md](https://link.gitcode.com/i/74dd5ac2477160f838238e4435311788) 示例展开,结合组件源码、样式与测试用例,讲解如何通过一行 `circle` 属性生成圆形头像与缩略图,并完整覆盖 Image 组件的 Props 表、加载占位、失

gitblog_01093的博客 430

编程语言与存储过程:业务处理的速度与取舍

本文探讨了企业系统中业务逻辑实现的两种主流方式:存储过程和应用层编程语言的优劣势对比。从性能角度看,存储过程在减少网络延迟、执行计划缓存和原子事务方面具有优势,尤其适合金融、电商等高并发交易场景。而编程语言在灵活性、可维护性、跨数据库兼容性和扩展性方面更胜一筹。随着微服务架构兴起,存储过程使用减少,但在高一致性事务系统中仍不可替代。建议根据业务需求选择:存储过程适合单库复杂事务,编程语言适合复杂业务和分布式系统。未来数据库与应用的边界模糊可能带来存储过程的新机遇。

nbsaas-boot基于Request-Response的企业级快速开发框架 585

MySQL存储过程与Java代码修改的本质差异及实践

在数据库与应用程序开发中,存储过程和编程语言代码的修改机制存在本质区别。存储过程作为预编译的数据库对象,其修改属于DDL操作,需要重新编译并获取元数据锁,可能引发事务阻塞问题。相比之下,Java等编程语言支持热更新机制,但受限于方法签名等约束条件。从工程实践角度看,存储过程更适合处理数据密集型操作,而复杂业务逻辑建议放在应用层实现。通过版本控制工具如Git和Flyway,结合性能测试工具如JMH和sysbench,开发者可以更好地管理这两种技术组件的变更。特别是在高并发场景下,合理分配数据库存储过程与应用层

weixin_33696106的博客 366

存储过程与函数深度实战

PL/pgSQL语言精通:变量声明、控制结构、异常处理等核心语法函数vs存储过程:理解两者差异和适用场景动态SQL安全使用:防止SQL注入的安全编程实践性能优化技巧:批量处理、缓存策略、资源管理等调试与测试:单元测试框架、性能监控体系代码规范:统一的命名和格式规范错误处理:完善的异常处理机制性能优化:批量操作和缓存策略安全编程:输入验证和SQL注入防护文档完善:详细的函数说明和注释。

苦哈哈的 C++ 程序员,写这个技术博客不是为了装逼,也不是为了立人设,是为了收割流量 851

MySQL存储过程与触发器

一种存储过程,与表相关联,自动执行,而且是隐式执行触发器是数据库中针对数据仓库操作出发的特殊的存储过程。

m0_58611644的博客 2158

业务逻辑写在存储过程好还是后端好_用存储过程和 JAVA 写报表数据源有什么差异...

我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利。所以,报表开发中这样的存储过程并不少见:3008 行,141KB 的存储过程,会给报表开发带来什么不好的影响?1. 编辑调试性 存储过程难以编辑调试,这样几千行存储过程的开发周期往往要以周或月计,这样会严重影响报表的开发效率,而业务提的报表需求似乎都“很急”。2. 维护性 相...

weixin_39862097的博客 670
上一篇: 【飞秋】进一步完善 -- GEF创建助手工具条
下一篇: 【飞秋】记一次“偷盗”别人的CSS和Js
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值