banq一再作出解释,是因为程序员可以完全不用理会数据的存储方式而编写出企业级应用系统,才说数据库已死。
在这几个字上讨论意义不大。关键是你更倾向于哪种设计思想,是为了模拟现实世界而生的OO,还是为了存储数据而生的关系数据库?讨论围绕这两种设计思想的优缺点展开才更有意义。
我更倾向于OO设计思想。我希望在不久的将来程序员在设计一个企业级应用系统时,不用再设计表结构,不用再优化sql语句,不用再写dao,不用再。。。现实世界中是什么样,在计算机中就是什么样。
说句题外话,如果有一天智能机器人诞生了,以数据库为核心的设计者们你们还会坚信关系数据库不会消失吗?其实我只是想说,任何事物都有消失的一天。若干年以后的一天,如果这个帖子还在,那时的程序员又会如何谈论这个问题呢?。。。
[该贴被fangwei于2009-04-07 14:58修改过]
至于说那种思维方式绝对不是说用不用数据库就可以培养出来的,很多年以前没有数据库的时候难道就都是OO了??至于说“现实世界中是什么样,在计算机中就是什么样”这个观点是错误的,计算机是为了改造生活,提高生产力的,如果只是为了还原生活,根本就不需要计算机这种东西。
2)缓存是因数据库而生的,它是数据库这张皮上的毛。毛是永远无法代替皮的,皮没了,毛就被风吹走了。
3)绝大多数搞软件的,都无法回避数据库。中国搞软件的,不是懂数据库太多,而是太少。
你这种大师级的人物 在中国太浪费了 真的 你是个才啊 就是呆错地方了
世界上有多少个系统,有多少种系统,每种系统的要求都是完全不一样的。"数据库已死"这种话说的太武断了,有点一叶幛目,不见泰山的味道,呵呵。
PS:j2ee好的一点就是全球的开发人员都在努力做贡献,这是其它语言没办法办到的,过去买个分布式缓存很贵,但是现在又很多的开源的,免费的,也经过考验的缓存系统提供给我们用,为何不用。我现在也体会到了banq老师那种不被别人理解的郁闷心理。
“想想在发帖”?啥意思?是不是要他们不要真的发帖,而只是心里想想?
>>>一个人的水平不是说做的系统越多越好的。
这意思是不是说,一个人的水平是在做过N个系统后最高?再做一个就又变低了?请问,这最佳数N是多少?
我同意好的框架可以通过分布运算提供必要的伸缩性,但是也要看到
好的框架运行在没有优化的数据库上,需要更多的硬件才可以提供和优化好的单台服务器相当的性能。
这本身就是一种浪费,框架是好的,但是整个系统浪费了很多硬件资源,应该不能叫一个设计良好的系统。
分布不是万能的,不能为了分布而分布。系统设计可以考虑将来分布的需求,但是前提是预计的系统负载一台服务器无法满足,而且没有办法简单的根据业务功能分散到不同服务器。
首先把数据架构好,这是根本。
在具体设计时,正如楼上说的,还得好好动脑筋去优化数据库。
否则,你再对象,再DDD,再缓存,总归是一个烂应用。
我这些都是陈词滥调。不过,有些陈词滥调是很不容易退出历史舞台的。至少,靠浮躁,靠空谈,是不能把它们赶下台的。
而数据存储和查询的优化是非常复杂的,很难想象不需要人工干预就可以达到好的性能。
举个例子,原应用运行在Oracle 9i,使用RBO。尝试采用Oracle 10g,使用CBO。性能下降非常明显。10g基于统计的自动优化远远不如手工优化的结果。
顺便提一下缓存,框架支持者一般在提到性能问题的时候就拿缓存说事。不否认缓存可以提高性能,数据库也有缓存。但是也要看到缓存是非常昂贵的。对于TB级的数据,多少内存才能满足缓存要求?而且多服务器并行也可能需要缓存同样数据在几台服务器上,从而造成几倍的内存需求。这还没有考虑缓存同步带来的开销。
以一个ETL工具作为例子,ETL服务器从一个数据库取数据,做一些转换,然后存入另一个服务器。为了转换的需求和提高性能,ETL服务器用内存缓存数据。这是一台Unix服务器,使用了几个G内存作为缓存,系统性能仍然不是很理想。甚至不如exp,ftp文件到另一个服务器,imp。
所以说,缓存和框架不是万能的。现在谈数据库已死,为时尚早。
-------数据库是要消亡的?
-------数据库不会消亡?
会不会消亡我不知道,但我知道,到目前为止,人类的知识延续的最后方法是把它记录下来,从一种思想变成一种可以阅读的文字。管它是用纸来存储还是用高低电平来存储。
我认为数据库会消亡,就像我现在不用再写汇编语言一样。
我认为数据库永远不会消亡,什么是数据库?东西多了总的有个存放的地方吧,存放东西的地方我认为就是一个仓库,hibernate好啊,你要是一个程序员,如果你很懒,你可以永远不用写sql语句,总有方法解决问题的,但我就不一样了,我喜欢在用windows系统的时候还敲点dos命令,来显示我对计算机还是有点了解的。所以我用hibernate的时候也喜欢敲点sql语句。
写完发现,写的全是废话。。。