`
yzgfbj
  • 浏览: 78498 次
  • 来自: ...
社区版块
存档分类
最新评论

【转贴】【推荐】数据库时代的终结

阅读更多
以数据库为核心的软件时代已经过去,数据库时代早已结束,当我看到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。

  以上不只是理论,而是我每天正在做的,如果你也是或赞同请广为传播,唤醒更多彷徨痛苦的初学者。
分享到:
评论

相关推荐

    ASP与数据库,有用的代码(转贴,摘贴)

    根据提供的文件信息,本文将详细解析ASP与数据库结合进行密码验证的相关知识点,包括所需环境配置、工具选择以及具体实现步骤。 ### ASP与数据库密码验证详解 #### 一、ASP简介 ASP (Active Server Pages) 是微软...

    数据库access.rar

    Access是由微软公司开发的一款小型关系型数据库管理系统,它在个人和小型企业中广泛使用,尤其适合处理相对较小规模的数据存储和管理任务。Access以其易用性、灵活性和与Microsoft Office套件的无缝集成而著名。在...

    QTP数据库连接

    【转贴:完整的QTP数据库连接(以SQLSEVER例并有导出excel) 百度空间_应用平台.files】和【QTP手动连接SQL Server-DB2-Oracle数据库的方法 - gold_85的日志 - 网易博客.files】可能是包含示例代码或图片的附件,...

    易语言动网转贴.rar

    4. **数据交互**:易语言可以处理各种数据类型,并且具备数据库操作能力,方便与数据库进行交互,这在论坛转贴功能中非常重要,因为帖子数据通常存储在数据库中。 关于"动网转贴"的具体实现,可能涉及到以下知识点...

    易语言源码动网转贴.rar

    7. **数据库操作**:如果动网转贴还需要记录用户的转发历史,那么就会涉及到数据库操作,如MySQL、SQLite等,用于存储和查询用户转发的信息。 8. **安全防护**:防止恶意用户滥发帖子,可能需要设置转发频率限制,...

    senlon实用查询工具大全 v2014 本地数据库版.zip

    1、源码全部为本地数据库; 2、源码功能丰富,总计包括180项实用查询工具; 3、源码干净简洁,无广告纯净版; 4、适合任何网站使用,尤其是适用于网址导航、本地服务等类型的网站;   日常生活类查询: ...

    动网转贴.e.rar

    【压缩包子文件的文件名称列表】:虽然没有给出具体的子文件名称,但通常一个动网论坛的备份可能会包含数据库文件(如SQL文件)、帖子内容的文本文件、用户信息、附件等。这些文件可能是以结构化的格式(如CSV、XML...

    BFC UBB转贴器

    由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 <br> 而这个小程序则完全不依赖于浏览器,以BFC采集器的UBB转换模块为基础,转换速度超快,...

    动易系统的论坛转贴工具 -ASP源码.zip

    开发者或者有兴趣学习ASP的人可以研究这个源码,理解如何在ASP环境中处理用户交互、数据库操作、论坛数据结构以及实现转贴功能的具体步骤。 压缩包内的“内容来自存起来软件站www.cqlsoft.com.txt”可能是一个文本...

    动易系统的论坛转贴工具

    《动易系统的论坛转贴工具详解与应用》 在互联网信息交流日益频繁的今天,论坛作为用户互动的重要平台,其内容分享与传播的作用不容忽视。动易系统的论坛转贴工具,便是为了解决用户在论坛间便捷分享内容而设计的一...

    Html处理软件、转贴工具(源代码)

    去除Html中的干扰码等(样例中以轻之国度的干扰码为例) 配置文件语法: 方法类型(整数) 最大匹配长度(整数) 字符串1(删除开头) 字符串2(删除结尾) 方法类型: 1:删除单行 2:删除行与行之间的

    东度极品论坛转贴工具

    东度极品论坛转贴工具东度极品论坛转贴工具

    凹丫丫ASP.NET新闻系统学习(转贴)

    5. **LINQ to SQL**:虽然在VS2005时代,LINQ to SQL相对较新,但它简化了与数据库的交互,使得可以直接在.NET对象上执行SQL查询,降低了数据访问层的复杂性。 6. **页面布局与样式**:HTML、CSS和JavaScript将用于...

    电子政务-导电泡棉转贴装置.zip

    在“导电泡棉转贴装置”这个特定的场景下,我们可能是在讨论一种用于电子政务设备或系统中的特殊组件。 导电泡棉是一种具有导电性能的泡沫材料,通常用于电子设备的屏蔽、接地或防静电保护。在电子政务设备中,这种...

    jquery的转贴功能实现

    在本主题中,我们将深入探讨如何利用jQuery实现“转贴”功能,这是一种常见的社交媒体分享功能,允许用户将网页内容轻松分享到各种社交网络。 首先,让我们了解一下jQuery的核心概念。jQuery通过一种简洁的语法提供...

    论坛转贴源代码

    论坛转贴工具提供常的转换追加,转换覆盖,预览贴子,分析超链接,屏蔽文字,图片,超链接,提供查找... 支持IE浏览器,360浏览器,搜狗浏览器,火狐浏览器,谷歌chrome浏览器等主流浏览器,无需数据库,上传即可使用!

    论坛转贴 v1.0 JS版

    论坛转贴工具提供常的转换追加,转换覆盖,预览贴子,分析超链接,屏蔽文字,图片,超链接,提供查找... 支持IE浏览器,360浏览器,搜狗浏览器,火狐浏览器,谷歌chrome浏览器等主流浏览器,无需数据库,上传即可使用!

    动网转贴.zip易语言项目例子源码下载

    《易语言项目实例——动网转贴》 易语言,作为一种中文编程语言,以其独特的语法和易用性,深受广大编程爱好者尤其是初学者的喜爱。这个名为“动网转贴”的项目,是易语言编程实践中一个典型的例子,它为学习者提供...

Global site tag (gtag.js) - Google Analytics