“对本命题反感或想不通的人说明都没有真正接受中间件思想,需要更新自己的知识库了。”--摘自楼主的话。
这样说话的人,很容易走火入魔。楼主要注意了

BANQ真的是已经走火入魔了。过了这么多年了,别人已经都走了,还在自己跟自己抬杠。

关系型数据库需要针对当前的面向对象技术做些调整是真的。能直接存储对象的数据库正是反映了这样的动向。但是说数据库已经终结,任何存储形式只要搭配Cache就可以,太滑稽了吧。对于上亿条数据的大型数据集,不使用数据库有什么更好的办法快速检索呢?数据的ACID怎么保证呢?日常的运行维护怎么完成呢?这些问题中间件能解决吗?如果能解决这还叫中间件吗?
致于那个大小通吃的Cache我看还是别动不动就拿出来说事比较好。就像设计模式不是只要用了就有好处一样,cache的使用能有多大帮助也是需要个案分析的,怎么能说成是数据库的替代物呢?
楼上的不要火那么大,数据库时代终结,不是说不用数据库,而是站在数据库基础上,基于构件来开发了,数据的ACID通过Hibernate/JPA这些中间件来实现,而且可以实现乐观锁这些性能更好的并发访问。

软件分为分析设计编程部署运行这几个阶段,5年前,我使用CMP开发软件时,已经在分析设计编程这几个阶段都不涉及数据表,数据表只有在我的软件部署运行时,才由我的软件自动创建或update,现在这一功能在Hiberante这些O/R mapping上更加纯净。

如果一个技术开发者开发完软件,还没有与之打交道,或者说,很少的交道,那么这个技术不是已经离开我们程序员关注的舞台了吗?以它为中心的时代不是算结束了吗?

如果我们每个人持续更新自己的知识,我们还会对这个命题疑惑或者感到愤怒吗?何必呢?如果你感到命题可笑,或者提出问题的人可笑,那你能不能一闪而过想想,也许可笑的是自己?是否只有等到辞退信放到自己的桌子上才翻然醒悟?

致面向对象技术初学者的一封公开信
http://www.jdon.com/article/30840.html

除非是特简单的那种应用,否则数据库的特性是无法忽略的。数据库对于性能、事务的影响都是非常大的。任何一个严肃的项目都会有相当多的时间用在配合数据库的调优上面。以OO技术如此流行的情况看,如果真的数据库如此不重要,IT业里还会有DBA这个职位吗?
Hibernate能解决ACID吗?好新鲜的观点。前台mm告诉我说事务是数据库完成的,Hibernate只是提供封装而已。你们俩到底谁说的对啊?

我其实回帖的时候并没有带什么情绪,对于这样无谓的争执也真的没什么兴趣,楼主还是继续在自己的城堡里陶醉吧,我不打扰你了。

>Hibernate能解决ACID吗?好新鲜的观点。前台mm告诉我说事务是数据库完成的,>Hibernate只是提供封装而已。你们俩到底谁说的对啊?

不错,Hibernate等JPA最后机制是依靠数据库完成的,就象Java语言最终要依靠汇编语言实现一样,难道我们就成天围绕汇编语言或数据库这样底层机制开发软件?

抬杠找个有水平话题,前台MM都能回答问题,还在这里提出来?7

>IT业里还会有DBA这个职位
再告诉你一个事实:N多年前DBA年薪是20万,现在年薪几十万的是架构师。这个变换可见DBA从辉煌沦落到网管一样地位。

微软操作系统vista要出来了,操作系统还在进步发展,但是我们程序员还会直接基于操作系统开发企业软件吗?

这么简单道理就是被一些认死理、学死了的人奉为异端邪说。
[该贴被banq于2007年01月30日 13:21修改过]

>就象Java语言最终要依靠汇编语言实现一样
Java需要依靠汇编语言吗?又是第一次听说。我们这里刚参加工作的新员工说直接可以执行的是机器语言啊。

>抬杠找个有水平话题,前台MM都能回答问题,还在这里提出来?7
你老人家说话都不如前台MM严谨也好意思好为人师啊。

>N多年前DBA年薪是20万,现在年薪几十万的是架构师。这个变换可见DBA从辉煌沦落到网管一样地位。
你这是“万般皆下品,唯有架构高”啊。第一,现在也有很多DBA拿高薪;第二,架构师工资高也不能代表DBA不重要;第三,网管也是一个专业,有他自己的知识领域和发展前途。最后,在任何一个专业做好做专都很有前途,反之,即便是做了架构师,动不动就拿些似是而非的东西瞎忽悠,也没什么意思。

>我们程序员还会直接基于操作系统开发企业软件吗?
程序员当然应该关心操作系统提供的功能了,这也会有分歧吗?如果不需要关心操作系统,怎么会有那么多软件是针对不同的平台发布不同的版本呢?如果操作系统的升级对于开发人员毫无意义,还有必要升级吗?如果程序员都不清楚操作系统提供了哪些功能,怎么能充分发挥系统的性能呢?一个“年薪几十万”的架构师,不做具体分析,闭门造车,会有什么好结果呢?

>这么简单道理就是被一些认死理、学死了的人奉为异端邪说。
这句话你还是赶紧收回吧。你看看你都在瞎扯什么啊,真是无聊。

>如果程序员都不清楚操作系统提供了哪些功能,怎么能充分发挥系统的性能呢
真是很抱歉,我至今不知道操作系统(无论windows或linux)哪个函数对我的JiveJdon论坛性能有什么影响?

如果按照你的逻辑,我们搞软件的最好自己研发CPU(至少能够微调CPU)......无语....

你的jivejdon不需要考虑操作系统的因素至少说明它代表的应用类型是有局限的,不能以偏概全。比方说要用java开发服务器,需要高性能的网络程序。你需要使用NIO是吧,要用异步IO对吧,异步IO在各种操作系统上是怎样的表现你知道吗?你认为有必要了解吗?
脱离了这些技术细节,我不清楚一个年薪几十万的架构师跟一个月薪5-6千的工程师有多大区别。
在《领域驱动设计》那本书里,开篇就说:“离开具体实现的概念是没有价值的”。我想你可能没有注意到这句话吧。

我觉得没有极端的思想,不同的环境有不同的最优设计方案。灵活性应该和性能是一个均衡的关系,而不是为了完全的解耦牺牲性能,是需要权衡的。

数据库现在依然是主要的持久源。各个数据库厂商的产品都经过相当严格的商业考验,在很多情况下是靠得住的。

不管老技术新技术,哪种设计思想,在不同环境不同约束条件下都不一定永远最好。

中间件替代不了数据库索引。只执行ACID的系统想必也不是什么好系统。
我很敬佩banq的水平
但是架构一词只能在软件业使用的
对于最终用户而言,如果你能告诉他你不使用数据库
不需要一个dba进行日常的操作他是最高兴的

我认为之所以软件分层的好处是因为一个人的精力是有限的
不可能样样都精通
有的人很熟悉业务,但是对于程序他只是知道一个大概
比如说一个人用餐具吃饭
他可以写出 persion.settools(tools) ,persion.eat(food),这样的东西,但是这样系统的架构就完成了
有的人善于实现,那么他会实现 chinese.settools(chopsticks) , chinese.eat(rice),来完成真正的业务实现,数据处理
有的人对数据库比较熟悉,那么他会建立一个user表,一个tools表,一个food表之类的,进行数据存储,然后用一些方法提高效率

也就是我说的,现在对程序员的要求降低了,不需要一方面追求效率,一方面了解业务,你只需要一个方面突出就够了。然后去做你本层要做的事情,不要刻意的抬高自己的层次来贬低别人的层次,也不要随便说一个时代的终结,而是说时代需要共同发展。

我的很多观点都和 bang 大哥相似(有点大言不惭),

我第一次觉得数据库的问题是在看了 Robert C. Martin 的那本书,我记得里面说数据库是实现细节,要退后考虑.

我觉得Bang大哥如果用"围绕数据库开发软件时代终结"会比较适合,而这也是要表达的最初意思吧!

我是十分同意这种说法的,从自己的经验看,从理论学习看,数据库的确是现在软件开发的中心,我也觉得面向对象其实很排斥面向关系数据库, 现在的一些特别的技术就是因为数据库是面向关系而产生的.

面向对象是解决业务的, 不是解决具体编码的.围绕数据库开发就是具体编码,
面向对象时代一切应该围绕领域模型开发软件.

相关帖子:

为什么面向对象的数据库不普及呢?
http://www.jdon.com/jivejdon/thread/31659.html

Hibernate等ORM使用之道:
有人总以为有了关系数据库知识,就能用好Hibernate,这是认识上的误区;很多人总是先有数据表结构,然后使用Hibernate倒推类代码,这是使用上的误区,从对象模型出发才是根本之道。
http://www.jdon.com/article/31684.html


[该贴被banq于2007年05月30日 13:31修改过]

这贴有点象"没妈的儿子说妈就是野兽"

知道多了,就发现自己更无知了.
"数据库时代终结,不是说不用数据库,而是站在数据库基础上,基于构件来开发了"

那是数据库时代终结吗

我不用jdon的框架我能说banq就终结了吗