以前我误解banq的意思了。banq并不是认为数据库真的死了,看他在2009年04月06日 16:01帖的意思,我理解:或者banq看不见数据库了,或者banq觉得自己不必了解数据库了,就可以认为数据库已经死了。

关键是怎样理解数据库这个概念,是存储数据的地方,还是典型关系型数据库。而且就算是典型关系型数据库妄谈生死也是不对的。

大多数人一直不能接受的是,“数据库已死”这几个字。大胆猜测是因为做了N年的软件,每天都跟数据库打交道,感情上不能接受。
banq一再作出解释,是因为程序员可以完全不用理会数据的存储方式而编写出企业级应用系统,才说数据库已死。
在这几个字上讨论意义不大。关键是你更倾向于哪种设计思想,是为了模拟现实世界而生的OO,还是为了存储数据而生的关系数据库?讨论围绕这两种设计思想的优缺点展开才更有意义。
我更倾向于OO设计思想。我希望在不久的将来程序员在设计一个企业级应用系统时,不用再设计表结构,不用再优化sql语句,不用再写dao,不用再。。。现实世界中是什么样,在计算机中就是什么样。
说句题外话,如果有一天智能机器人诞生了,以数据库为核心的设计者们你们还会坚信关系数据库不会消失吗?其实我只是想说,任何事物都有消失的一天。若干年以后的一天,如果这个帖子还在,那时的程序员又会如何谈论这个问题呢?。。。
[该贴被fangwei于2009-04-07 14:58修改过]

指出楼上思维上的错误观点吧,首先你觉得大多数人不接受这个观点,那么说明什么??说明数据库很有市场啊,有市场的东西要已死,符合逻辑么??
至于说那种思维方式绝对不是说用不用数据库就可以培养出来的,很多年以前没有数据库的时候难道就都是OO了??至于说“现实世界中是什么样,在计算机中就是什么样”这个观点是错误的,计算机是为了改造生活,提高生产力的,如果只是为了还原生活,根本就不需要计算机这种东西。

1)问题还是在于层面。OO等和数据库根本不在一个层面上,无法竞争。
2)缓存是因数据库而生的,它是数据库这张皮上的毛。毛是永远无法代替皮的,皮没了,毛就被风吹走了。
3)绝大多数搞软件的,都无法回避数据库。中国搞软件的,不是懂数据库太多,而是太少。

有些人以为自己是上帝,上帝说你的观点是错的,那么你就是错了。对不起,我错了,你说的都对。

如果楼上相信上帝,好吧,祈祷上帝能够帮你写程序。

banq你去美国微软找比尔盖茨混吧 在中国你也不会有什么气候的 尽管你牛比
你这种大师级的人物 在中国太浪费了 真的 你是个才啊 就是呆错地方了

假设关系数据库进化到对象数据库,对象数据库因为系统的100%保障进化到不使用存储界质。那它的本质是什么呢,还是要对外提供数据接口,还是要集中存放对象数据,而且也还是要对对象数据进行管理。这难到就不是数据库了吗???
世界上有多少个系统,有多少种系统,每种系统的要求都是完全不一样的。"数据库已死"这种话说的太武断了,有点一叶幛目,不见泰山的味道,呵呵。

呵呵,请各位工作N年,有N多经验的前辈们想想在发帖,一个人的水平不是说做的系统越多越好的。我07年来到Jdon的时候,对一些观点也有否定态度,但是经过我这两年的思考和探索,我终于明白了banq老师的良苦用心。过分依赖数据库,依赖数据库事务提供的隔离机制最终导致数据库服务器单点瓶颈。而我们可以换一种思维,数据库的事务只是提供对事务完整性的保证,至于并发我们可以针对具体的业务对象模型,在内存中进行控制。既然在内存中控制,那么业务对象模型就要有个宿主的空间,这个空间其实就是缓存。我希望各位前辈和道友好好思考一下。不要老是不放自己过去的经验,我们中国最需要的就是创新。

PS:j2ee好的一点就是全球的开发人员都在努力做贡献,这是其它语言没办法办到的,过去买个分布式缓存很贵,但是现在又很多的开源的,免费的,也经过考验的缓存系统提供给我们用,为何不用。我现在也体会到了banq老师那种不被别人理解的郁闷心理。

>>>呵呵,请各位工作N年,有N多经验的前辈们想想在发帖,
“想想在发帖”?啥意思?是不是要他们不要真的发帖,而只是心里想想?
>>>一个人的水平不是说做的系统越多越好的。
这意思是不是说,一个人的水平是在做过N个系统后最高?再做一个就又变低了?请问,这最佳数N是多少?

基于数据库已死,也就是说设计时看不到数据库,从而不可能优化数据库访问。而好的数据库优化可以比没有优化提高上百倍的性能。
我同意好的框架可以通过分布运算提供必要的伸缩性,但是也要看到
好的框架运行在没有优化的数据库上,需要更多的硬件才可以提供和优化好的单台服务器相当的性能。
这本身就是一种浪费,框架是好的,但是整个系统浪费了很多硬件资源,应该不能叫一个设计良好的系统。
分布不是万能的,不能为了分布而分布。系统设计可以考虑将来分布的需求,但是前提是预计的系统负载一台服务器无法满足,而且没有办法简单的根据业务功能分散到不同服务器。

如果是面向数据的应用,而不是面向计算的应用(工程计算类等),在做总体设计时,必须是围绕数据来做的。这和现在政府的亲民提法是一样一样的。你政府本来就是服务于民众的,你不围绕老百姓做事,那不是天马行空吗?你应用本来就是处理数据的,你不围绕数据,你不是空头吗?
首先把数据架构好,这是根本。
在具体设计时,正如楼上说的,还得好好动脑筋去优化数据库。
否则,你再对象,再DDD,再缓存,总归是一个烂应用。
我这些都是陈词滥调。不过,有些陈词滥调是很不容易退出历史舞台的。至少,靠浮躁,靠空谈,是不能把它们赶下台的。

同意,框架是系统的一部分,不可能独立于其它部分而存在。在目前阶段,数据库还是数据持久存储的主要选择。在出现完全可以自行优化性能的数据库之前,单纯提DDD,OO和框架的作用是不现实的。
而数据存储和查询的优化是非常复杂的,很难想象不需要人工干预就可以达到好的性能。
举个例子,原应用运行在Oracle 9i,使用RBO。尝试采用Oracle 10g,使用CBO。性能下降非常明显。10g基于统计的自动优化远远不如手工优化的结果。
顺便提一下缓存,框架支持者一般在提到性能问题的时候就拿缓存说事。不否认缓存可以提高性能,数据库也有缓存。但是也要看到缓存是非常昂贵的。对于TB级的数据,多少内存才能满足缓存要求?而且多服务器并行也可能需要缓存同样数据在几台服务器上,从而造成几倍的内存需求。这还没有考虑缓存同步带来的开销。
以一个ETL工具作为例子,ETL服务器从一个数据库取数据,做一些转换,然后存入另一个服务器。为了转换的需求和提高性能,ETL服务器用内存缓存数据。这是一台Unix服务器,使用了几个G内存作为缓存,系统性能仍然不是很理想。甚至不如exp,ftp文件到另一个服务器,imp。
所以说,缓存和框架不是万能的。现在谈数据库已死,为时尚早。

终于看完了
-------数据库是要消亡的?
-------数据库不会消亡?
会不会消亡我不知道,但我知道,到目前为止,人类的知识延续的最后方法是把它记录下来,从一种思想变成一种可以阅读的文字。管它是用纸来存储还是用高低电平来存储。
我认为数据库会消亡,就像我现在不用再写汇编语言一样。
我认为数据库永远不会消亡,什么是数据库?东西多了总的有个存放的地方吧,存放东西的地方我认为就是一个仓库,hibernate好啊,你要是一个程序员,如果你很懒,你可以永远不用写sql语句,总有方法解决问题的,但我就不一样了,我喜欢在用windows系统的时候还敲点dos命令,来显示我对计算机还是有点了解的。所以我用hibernate的时候也喜欢敲点sql语句。
写完发现,写的全是废话。。。