您的位置:首页 > 数据库

对数据库、中间件和软件设计的认识

2005-04-30 02:31 525 查看
对数据库、中间件和软件设计的认识
软件开发的目的何在?
请让我们带着这个问题阅读本文.

I. 数据库

出现的原因
数据库技术出现之前,数据的管理方式有两种,人工管理和文件系统.
在人工管理阶段,数据的定义和使用和程序是结合的相当紧密,并且用户要自己管理数据,也不能共享,计算机系统也不提供数据管理的功能.这样,数据就和程序不可分离,否则就无意义.也导致了程序和数据的重复性.
这样让人们很麻烦的技术,导致了开发新技术的欲望.(顺便说一下,麻烦是技术更新的动力!)
正是因为人工管理的缺陷,导致了文件系统的产生.
文件系统有着以下优势和特点:
a. 同时使用存储器可长期保存.
b. 数据的使用 方式发生变化,不用关心如何存储
和存储在什么地方,只要文件名即可使用
c. 文件的格式和用途的多样化
d. 数据可重复使用,不再和程序密不可分.
e. 对数据的操作以纪录单位.
同时,随着时代和应用的变化(数据量的增加),文件系统
暴露出了其劣势:
a. 数据冗余
b. 数据的不一致性
c. 数据之间的关系非常弱
d. 操作的复杂性---每换一次数据格式,负责管理数据的程序可能都要变 .
这些问题,让人们非常头疼.因此在这个阶段充分发展了数据结构和算法后,为数据库技术的出现提供了一个良好的基础.
数据库的优势我就不再啰嗦.
但请不忘记,”数据库”是为什么而产生?------------为了更方便的解决数据的存储问题,保存和管理数据是数据库的核心任务.
数据库不是核心问题了,但并不代表数据库就要没落.
在相当长的时间内,数据库还是会继续存在.

II. 中间件

出现原因
我认为,中间件是为统一的业务提供一个平台.一个业务可能的使用者非常广泛.手机 计算机 等都可能是一个业务的使用者.为了避免业务的重复开发,把业务从整个系统提取出来,单独管理,这是个很不错的主意.这样,把整个软件系统分割三部分,业务的前端(使用入口,可称为表示层),业务的后端(业务要操作的数据对象部分,可称为实体层).这也是分布式多层的含义(分布式的含义在这里体现的并不全面).也就是说为了更好的处理业务层,采用分工(分层)的方式,来细化软件的各个部分(可以让你想到社会的分工的细化),提供更强的服务.
中间件可以解决业务层的问题.

III. 软件开发

1.软件开发什么呢?
软件开发,我认为主要目的有两个,一个是计算为中心的,一个是业务为中心.
(1).计算为中心,主要体现在科学计算和航天等对数据计算机要求高的行业上,这里也基本上是以数据为中心.
(2).业务为中心,主要是企业中的应用

2.一般来讲,我们开发的主要对象一般是企业应用. 那么核心问题就是处理业务.那么可以这么说:
如果整个业务没有业务数据或中间业务数据要保存,根本就不用什么数据库技术.很明显,软件可以没数据(这里特指,要保存到数据库或其他媒体上可重现的数据),但不能没业务---------虽然在现实中很少见到.
3.软件开发的目的和软件开发的核心
通过以上的论述,软件开发的目的,是实现业务,这也是软件开发的核心-----------技术不是核心.只要能够满足条件的技术我们都能采用,不过,大部分会用那种效率高,功能强大的技术.
4.设计的原则和思想
我们拿到一个需求,进行分析,设计,实现,测试,发布.但这个过程具体如何来走?是先数据库还是其他的?
拿个例子: 比如牛奶的订单.
我每天要订一份牛奶,5瓶,每瓶1元,要求是jsports牌的,时间是1年.
很可能我过俩月,不喜欢jsports牌了,喜欢kobye牌的.也就是说我这份订单可能要改变.那么牛奶提供商要保存我的订单记录.
现在如果要处理我这个订单,那就要能够保存到数据库(一般方式).
看一下我们的分析步骤,业务(干什么:处理订单)-------à处理的业务对象(或称为实体,订单)-à保存业务对象到数据库.
按照正常顺序,我们是先接触到实体,而不是数据库.而且仅仅是因为我要保存实体的信息,才用到数据库-----------这就是数据库的位置和地位.
对于设计来讲,是先对象,还是先数据库?
我认为,应该是先对象.无论如何,即使再精通SQL,在处理一群由关系的实体对象和一堆让人搞了半天都搞不明白的SQL,我相信绝大部分人会选择前者-------人们更喜欢有逻辑关系的事物,他们能够更容易明白.
另外,如果在进行数据库设计后,有种种原因,我不能使用数据库该怎么办?(XML是个不错的选择.)
如果是以数据库为核心进行的设计,这个时候可能就麻烦了.
而以实体对象关系为核心的设计,仅仅把保存的操作更换为另外的策略而已.
因此,按照实体的实际关系,把他们有机的组织起来,这应该是设计的原则.这里实体的关系的重要性不言而喻------------在设计中一定要把握好.

IV. 结论

1.软件开发的核心
技术不是核心!
数据不是核心!
核心是--------业务!
2.设计的原则
道法自然!遵循事物本来的样子!把他们按照其实际的逻辑关系合理的有机的组织起来!在这里,不能不提一下设计模式.经历了时间检验的设计模,应该在设计中发挥一定的作用.
3.其他问题
软件系统可能有这样那样的问题,但核心是实现业务。
在保证业务正确的实现情况下,才能去考虑其他问题。
先实现,再优化也许是个不错的方法。
要正确对待软件开发,不能为了技术。
4.对技术的认识
软件是人力的延伸!
因此,技术是为人服务的.
具体到软件开发中,技术是为业务服务,无论是中间件,还是数据库(保存业务数据).
一种技可能在某段时间为主流,但也会落到历史的车轮之后.随着社会发展,分工的更详细,思想的认识更深刻,那就能导致更新的更简单的技术出现.
请记着:
麻烦是技术更新的的动力.
或更直接点:
人的惰性是技术更新的动力.关于数据库产生背景的更详细的论述,请参考:
http://www.ccw.com.cn/cio/research/info/htm2005/20050421_13L06.asp数据管理技术发展的三个阶段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: