数据库时代的终结
板桥里人
http://www.jdon.com 2005/04/28
以数据库为核心的软件时代已经过去,数据库时代早已结束,当我看到J2EE征途中那么多人在对象和数据库之间彷徨痛苦ing的时候,我想我该出来喊一声了。
其实这句话在几年前肯定有人喊过,因为中间件时代的来临,实际意味着数据库时代终结,正所谓一山无二虎:如果你重视数据库,你的J2EE系统就无法完全OO,只有你忽视数据库,你的系统才有可能完全迈向OO,至于数据库性能调优等特定功能都可交由EJB容器或O/R Mapping工具实现。
很多年前,包括我自己在内的大部分企业程序员都是从数据库开始我们的职业生涯,最早的是dBase/FoxPro,后来有了 SQL系列数据库, Oracle将数据库时代推向了顶峰。
每当有一个新项目时,第一步就是首先设计出数据表结构(Table Schema),然后开始使用SQL语句实现业务逻辑,这种开发模式一直重复,就是后来加入了DelPhI/VB,他们也只是承担图形显示实现,这种C/S结构带来最大问题是:非常难于维护,修改起来,迁一动百。
软件的生命在于运动,当它需要发展时,最棒的软件人员如果对他也束手无策,这是谁的悲哀?
现在更多人开始接受B/S结构,但是他们中很多人还没有真正明白为什么需要B/S结构,B/S代表的多层架构才是真正目的(因此,伪多层的B/S系统遍地皆是)。
多层架构实际是将以前系统中的显示功能、业务运算功能和数据库功能完全分开,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。
一. 从设计上说:由于实现层次完全分离,业务运算功能成为一种中间功能(中间层),它不依赖具体的表现层技术(Jsp/Html applet等),也不依赖具体数据库技术(Oracle/SQL Server),业务运算功能运行在J2EE应用服务器中,当我们的业务运算功能不再依赖数据库时,是否意味着数据库已经不是重点?
二. 当然,多层结构带来了性能问题:客户端访问数据库中的数据时,通常需要经过多个层次,非常耗费性能, 如何尽量减少数据库访问是J2EE应用系统首要解决的问题,使用存储过程并没有解决这个问题,存储过程的执行还是属于后端,并没有缩短客户端请求所要经历的坎坷路途。
解决性能问题的根本解决之道是使用
对象缓存
,现在, 64位CPU提供的巨大内存空间为单台缓存计算提供了硬件基础,更重要的是,这种缓存计算是可伸缩的,通过集群的缓存机制(如JBossCache), 通过增加应用服务器的数量,可以提高整个业务逻辑层的缓存计算能力,抛弃过去那种为内存斤斤计较的老思维吧。
三. 在系统分析之初是否首先需要数据表设计呢?回答是否定的, 以UML为代表面向对象的分析设计方法已经成为强大工具,随着面向模型驱动分析设计(MDA)的普及, 面向数据库分析方法正在逐步被抛弃,拥有深厚传统数据库分析习惯的程序员必须面对和接受这种挑战。
纵观整个J2EE系统开发过程,数据库已经从过去的中心位置降为一种纯技术实现,数据库只是状态持久化的一种手段(文件是另外一种实现手段);什么是持久化?这是相对于内存缓存状态而言,持久化就是当内存断电情况下能永久保存状态数据,但是如果J2EE应用服务器是7X24小时集群运行;几乎永不当机,是否有持久化的必要呢?
很显然,数据库已经沦为与操作系统中文件系统同样的层面,以它为中心的时代真的结束了,IBM早期将DB2数据库开源已经强烈向我们昭示这点。
对于J2EE初学者来说,尽早抛弃过去的两种影响:过程语言编程习惯和以数据库为中心的设计习惯,从全新的面向对象角度(OOA、OOD和OOP、AOP)来设计开发你的J2EE系统,J2EE设计开发三件宝:
Model、Patterns和Framework
。
以上不只是理论,而是我每天正在做的,如果你也是或赞同请广为传播,唤醒更多彷徨痛苦的初学者。
TSS最近相关文章:
使用AOP组合JBossCache实现对象缓存
OSCache降低数据库负载
使用缓存提高Web应用系统性能
Java企业系统架构选择考量
状态对象:数据库的替代者
DDD(Domain-Driven Design领域驱动设计)实战
分享到:
相关推荐
sqlce数据库小巧,性能优于access数据库,而且在silverlight,asp.net,winform和wpf中,可用linq语言,这些都是access数据库不具备的。不要以为操作sqlce数据库很简单,特别是在winform中,没有一定的技术,添加、...
ACCESS数据库密码破解版软件,是免注册,而且是专门针对ACCESS数据库设计开发的一款方便使用的密码破解软件。
一个用于 InfluxDB 时序数据库的 ORM,终结没有 InfluxDB ORM 的时代。常用操作一把梭,支持 php-fpm、Swoole 环境,一键轻松切换。可以用于所有传统框架、所有 Swoole 框架中!
计算机行业周报:平台经济时代终结,硬核科技时代到来.pdf
补贴时代终结后新能源汽车企业何去何从.pdf
共享软件时代的终结一文提出的观点是否正确,大家 仍然可以讨论
p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结者 p2p 终结者p2p 终结者p2p 终结者 p2p 终结者p2p 终结者 p2p 终结者 p2p 终结...
网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者网吧终结者
前缀和终结符 宿主变量 输入和输出变量 指示符变量 服务器登录与退出 登录服务器 退出服务器 游标的定义与操纵 定义游标语句 打开游标语句 拨动游标语句 关闭游标语句 关于可更新游标 游标定位删除语句...
互联网周回顾:微视时代终结 弹幕A站命悬一线.docx
被大青鸟 S2ATM取款机 S2数据库阶段项目,很干净的,很标准的注释.值得学习,参考
商业透明度晴雨表:为廉价数据时代的终结做准备-经济学人智库-201903.pdf
数据库设计 6 4.1 案件信息 6 4.2 立(销)案申请 7 4.3 终结报告/处罚决定 9 4.4 不予处罚信息 10 4.5 执法反馈信息 11 4.6 移送案件 13 4.7 简易处罚 14 4.8 案件延期信息 15 4.9 送达回证 16 4.10 强制执行 16 ...
易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游还原终结者易游...
《数据库习题答案》B卷终结版2[收集].pdf
终结性考试说明 终结性考试是在形成性考核的基础上,对学生学习情况和学习效果进行的一次全面检测。 终结性考试采用综合大作业的方式,考试内容在在学习网上公布,学生在规定时间内完成,在学习网上传考试结果,教师...
P2P终结者 4.04P2P终结者 4.04P2P终结者 4.04P2P终结者 4.04P2P终结者 4.04P2P终结者 4.04
编写程序:输入任意文法,统计Vn,Vt Vt表示为终结符,Vn表示非终结符 汇编原理的第一个代码实现
又到年底啦,IT或者财务MM们要进行ERP年终结转建立新年度帐,这个文件就是针对用友T6普及版的,教你如何结转建新年度帐!
驱动防火墙终结者 驱动驱动防火墙终结者 防火墙终结者 驱动防火墙终结者 驱动防火墙终结者