coder
2008-08-12 08:59
数据库里的数据至少都是几百G,不可能全部缓存在内存吧。数据库优化强调,正确设计表,如何建索引,如何写SQL,这些可以很好的优化。当然面向对象在架构设计也是很重要,不过两者是互补的。

banq
2008-08-12 13:06

表面上看数据量大,但他们都是业务数据,我们可以通过Evans DDD来将复杂大量数据进行监化模块化,而某段时间中业务数据访问比较集中,这段业务数据使用业务对象缓存效率高。

你试图找一个通用解决方案来统一解决这些大数据量问题,显得很外行和幼稚,而且也没有深刻体会面向对象的真谛:具体问题具体分析,具体解剖。这些都是现实生活中通用哲学方法,怎么会都没有掌握呢?

>数据库也尤为重要。数据库的性能优势是面向对象无法比拟的。你看EBAY,阿里巴巴,newegg等一些世界大公司,都是以数据处理为中心。

这是落伍的认识,那你看看google是否以数据处理中心?这是一云计算为中心:云计算是方向,云计算必然淘汰数据中心,云计算就是弱化数据库:

http://www.jdon.com/artichect/architecture.html

[该贴被banq于2008-08-12 13:18修改过]

coder
2008-08-12 13:33
那请问下,如果象汇总、统计等之类的怎么用面向对象的方式实现。在数据库里可以用sum,count,rownumber之类的。

banq
2008-08-12 13:54
>汇总、统计等之类的怎么用面向对象的方式实现,在数据库里可以用sum,count,rownumber之类的。

汇总 统计就是对你的业务对象进行汇总和统计了,听到这个答案,你可能觉得象白说,因为你脑子里都是数据库的影子,总是以为不是sum/count/rownumber,也是另外一种dum/xxx/heloornumber之类语法来解决吧。

告诉你,根本不是,oo没有数学公式,没有定理,没有SQL这样的标准语法,Java就是语法,模式就是定理,具体问题具体分析就是解决方式。

回过头来再看看:汇总就是对一一段时期内业务对象的计算,至于这些业务对象是从哪里来,我不关心,有可能来自数据库(那么就等效于你的sum/count之类语法);有可能来自另外一台服务器或B2B或SOA的来源(这个你就不能用sum语法来对付吧)。

下面的问题,我知道你又要开始比较他们的性能了,但是,且慢,用OO方面我都没有给你具体语法,你如何比较呢?我这里重点指出了思考方式的不同。但是话说回来,如果业务对象来自数据库,我也可以利用数据库的一些优化技巧,但是这些都不是重点,重点是,我关注重点是活在内存 分布在多台服务器内存中的业务对象,而不是后台数据库中僵死数据,而且通过云计算和集群,这些活着的对象7/24几乎无需睡眠(持久保存数据库),就象著名社交网站LinkedIn的Java架构技术指出一样:从硬盘重建内存Cloud一个实例需要8个小时(能频繁开关机吗?必须7/24一直运行)。

http://www.jdon.com/article/34214.html

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

coder
2008-08-12 16:19
OO的优势在于业务处理,数据库的优势在数据运算,我在大型企业做ERP的时候曾经编写过MRP算法,需要计算库存,计划,合同,送货单,计算逻辑非常复杂,又是汇总,又是合并,这种用OO的方法是没有办法实现的。我想说的是,不管是OO,还是数据库都只是一种工具而已,任何走极端的都是错的。数据库的很多高级特性是面向对象所无法比拟的。要不然为什么那么多世界级的大公司,都有那么多的DBA呢。

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