banq
2008-08-12 17:08
>我在大型企业做ERP的时候曾经编写过MRP算法,需要计算库存,计划,合同,送货单,计算逻辑非常复杂,又是汇总,又是合并,这种用OO的方法是没有办法实现的

不能这么绝对武断,计算逻辑算法复杂,更要采取OO进行分离,比如引入策略模式等等,OO方法是一种方法论,不能当饭吃,也就是说方法论和算法是两个不同东西,算法只是具体实现的一种手段,而OO方法论重要性要高于算法等具体科学。

其实你就是数据库思维,所以,OO和DB争论国外至今一直进行,不是三言两语能够辩完。

倡导OO,就是我们所有计算汇总合并基准数据是对象,而不是直接基于数据库数据,我想这是我要表达的。因为如果你直接使用SQL基于数据库数据计算,那么数据库服务器负载就会很重,你只有增加单机性能才能提高其应付处理复杂的逻辑,但是如果我们将这种计算负载移植到中间weblogic/websphere/jboss这样应用服务器上,通过增加服务器个数就能成倍提高处理性能,到底哪个性价比更高呢?而且没有单机单点风险。

你所说的eBay其实也遵循这个思路,他们的架构师曾经参与J2EE核心模式的起草,这个核心模式中不少就是EJB或分布式计算的。

90年代,一个DBA年薪20万,而如今一个JavaEE架构师年薪几十万,说明,如今IT热门已经发生转移,使用OO新技术架构起来的系统,将更加依赖架构师,而不是DBA,DBA只能维护那些老的DB系统,Oracle DB老大已经重点转移JavaEE,是第一个推出EJB3服务器的厂商,老大都闪了,何必那么死心眼揪住数据库呢,那只是10年前的事情了。

说了这么多,你可能还是认为我是理论派,我举个现实例子:

最近几个老外基于Spring+Hibernate架构的Appfuse整出一个自动分页排序的软件pagingappfuse,它后台是基于Compass//Lucenc全文检索,注意不是关系数据库,可以实现进行任何列表字段(注意是界面列表)的大小排列,它的表现层列表变换是采取Display Tag,

http://www.nabble.com/Appfuse-searching-with-Compass-2.0-(Lucene)-td17368089s2369.html

试验想想:你那些基于SQl的复杂合并汇总,如何能够移植到Compass/Lucene这样新的持久层检索技术上?恐怕必须重新写,而基于对象的复杂计算则不必关系数据来源于DB还是Lucene。。。。。,既然DB的东西要延展生命必须重写,那就表明它的时代已经彻底结束。

[该贴被banq于2008-08-12 17:24修改过]

coder
2008-08-12 23:06
1。数据库也可以集群。

2。这里所说的算法不光是指冒泡算法之类的算法,更是指企业级的数据运算。比如说像MRP里面的计算,根据

各种各样的库存,采购计划、采购指令、合同、送货单(很多种)、送货指令(很多种)来计算,包括像汇总、排序、计算等等。针对这种大型企业计算,数据库为我们提供了很多经过数据库内核优化了的函数,像rank,row_Number,sum之类的,如果这种我们自己用OO写算法实现,我不敢想想。对于这种复杂运算我们通常是让数据库在夜间自动运算几个小时来实现,如果用OO,实现起来的效率何在。目前好像还没有谁用OO来做这种MRP的运算吧。

3.我是赞成用缓存的,但是难道要把数据库里所有的数据都缓存在内存种 ?我曾经做过电信方面的系统,很多表每天入库的数据都是几亿。

4.设计模式,面向对象这些思想也是很好的。但很多方面数据库也有自身的优势。所以取长补短。不能过度设计。

coder
2008-08-12 23:09
90年代,一个DBA年薪20万,而如今一个JavaEE架构师年薪几十万,说明,如今IT热门已经发生转移,使用OO新技术架构起来的系统,将更加依赖架构师,而不是DBA,DBA只能维护那些老的DB系统,Oracle DB老大已经重点转移JavaEE,是第一个推出EJB3服务器的厂商,老大都闪了,何必那么死心眼揪住数据库呢,那只是10年前的事情了。

现在DBA的待遇不比开发人员低哦,呵呵。当然你不能拿一个普通的DBA跟一个顶级的JAVV架构师比了。

coder
2008-08-12 23:18
美国的信息产业是世界领先的,那数据库在美国的企业级开发也不是运用很广么,我也曾经跟一个美国软件公司的BOSS交流过,他们就认为数据库是软件系统的地基,所以很强调数据库的优化。

何谈数据库时代过去呢。

[该贴被coder于2008-08-12 23:21修改过]

freebox
2008-08-13 00:42
都集中在一台db主机上了也就说不上缓存到哪了,数据是可以不在一台主机上的,尽管业务联系很紧密的数据也是可以分散在各个主机上的,它们间的联系是用服务处理的,像用户数据和账目数据虽然是两个联系比较紧密的东西,但是持久的时候不是一定要持久到同一个db主机上的,应用服务器保证了客户看上去这是一个单主机的系统。

有的人说1M内存可缓存4500对象,我不知道这东西准不准,如果准的话1亿对象需要22个1G内存,分散到单独的主机上大约是3台。单机数据库查询出1亿对象要多少时间我就不清楚了,大概不会比缓存效率高。

猜你喜欢
11Go 上一页 1 2 3 4 5 6 ... 11 下一页