一亿只是一张表的数据量,我觉得如果吧全部表缓存起来是不太好的。这个成本也太高了。

>一亿只是一张表的数据量,我觉得如果吧全部表缓存起来是不太好的
一般不这么做,没有必要这么做,缓存总是比较小,最频繁使用的留在缓存里面。

从业务角度讲,在某段时间中业务数据访问比较集中,这段业务数据使用业务对象缓存效率高。比如财务 库存系统,总是当月数据查询得比较多,不可能10年前的数据查询量要大于当月的,所以,缓存就对当月数据性能起到提升作用,如果当月量比较大,可以用分布式缓存,多几个服务器,LInkedin的内存就达到2T。

如果象google搜索那么分散,从业务上无法有集中数据,那么采取google的并发查询策略,当然,我认为企业计算这种可能性很小,因为企业管理运行,总是关注当月资金流 物流情况,这是重点。

另外我对你前面提出很多依赖数据库API进行的复杂算法,其实换个思维想想,这些强劲的数据库API是整合在数据库产品中,如果拿出来,不就变成中间件了,而且好处是不依赖这个数据库产品,这是趋势,当然,某个厂商不希望拿出来,否则不好卖DB产品,但是作为用户以及技术客观发展,拿出来是大势所趋啊。所以,我们思维不能以现实怎么样就怎么样,而应该以发展眼光看。


[该贴被banq于2008-08-13 11:01修改过]

1。从业务角度讲,在某段时间中业务数据访问比较集中,这段业务数据使用业务对象缓存效率高。比如财务 库存系统,总是当月数据查询得比较多,不可能10年前的数据查询量要大于当月的,所以,缓存就对当月数据性能起到提升作用,如果当月量比较大,可以用分布式缓存,多几个服务器,LInkedin的内存就达到2T。

这也要考虑成本,企业的目的就是利益的最大化,同样是能少几个服务器能够解决的,为什么要多几个服务器呢,尤其是像中国现在的企业。不可能缓寸数据库就必然要直接操纵数据库。


2,另外我对你前面提出很多依赖数据库API进行的复杂算法,其实换个思维想想,这些强劲的数据库API是整合在数据库产品中,如果拿出来,不就变成中间件了,而且好处是不依赖这个数据库产品,这是趋势,当然,某个厂商不希望拿出来,否则不好卖DB产品,但是作为用户以及技术客观发展,拿出来是大势所趋啊。所以,我们思维不能以现实怎么样就怎么样,而应该以发展眼光看。


面向对象总是过分的强调扩展,以至于做了很多额外的工作。其实有些是不必要的。比如说数据库扩展,象这种变化一般是不会发生的,企业怎么可能一会又从ORACLE移植SQLSERVER呢,就算有也只是极少数,就好比打个比方,面向对象总是预测可能的一切变化,你出去旅游,你要考虑所有可能出现的情况,以至于你得做好一切准备,比如你要带好一汽车的东西去面对可能出现的问题,下雨了要伞,饿了要面包,生病了要药,走累了要椅子休息,包打不开又得准备老虎钳,老虎钳坏了又要准备好锤子,其实这些是不会发生的。以至于我们的系统过分的臃肿。有些扩展是没有必要的。
当然如果你是一个做中间件的公司,那是要适当考虑扩展的,因为你的产品是要给很多公司用的,得面对很多情况。

面向对象思想很好,但不要过度设计,数据库也非常重要。不要为了面向对象而面向对象,最终目的是给企业创作价值。谁少花钱又创造了更多的价值才是银蛋。


基于缓存的应用不必要拿到1亿数据,基于数据库的应用也同样不必要拿到1亿数据,我想说的是对于同等数据量,这两种方案都是可行的,为什么不采用内存检索而去查询db呢?

再说一下我认识的比较狭隘的扩展问题,我参与过一个项目,他们的某些内容是用sqlserver存贮的,而另一些内容是用oracle存贮的,但是这两种存贮实际上共同完成了一个业务目的。有一天,维护oracle的人走了,但是他们还照常变更着需求,我也不用担心我不会oracle而无法完成那部分数据的查询和持久作业,我是在和对象说话。事实上我是第二周才知道那部分是oracle做的持久,之前我一直以为全部都是sqlserver。

OO与db确实一直在争论不休,不过越辩道理越明。

我支持OO技术

>>db是存贮工具。性能可用缓存解决
不过我也很无奈,我得听别人的安排放弃一些东西

首先,我很理解这位兄弟!
其次我想说的是,现实总是在矛盾中,但是我只要看中了方向就不会放弃,我坚决支持OO,所以我不断的去学习理解OO!我想这个楼主说的不是没道理,只是因为一些事已成现实,他摆的是事实。但是我又认为这些事实如果推翻一切重来的话,一切从OO来过的话,不知道是什么样的?
所以你们的讨论对我们是种学习,谢谢精彩的分享!

>>db是存贮工具。性能可用缓存解决
不过我也很无奈,我得听别人的安排放弃一些东西

首先,我很理解这位兄弟!
其次我想说的是,现实总是在矛盾中,但是我只要看中了方向就不会放弃,我坚决支持OO,所以我不断的去学习理解OO!我想这个楼主说的不是没道理,只是因为一些事已成现实,他摆的是事实。但是我又认为这些事实如果推翻一切重来的话,一切从OO来过的话,不知道是什么样的?
所以你们的讨论对我们是种学习,谢谢精彩的分享!

00与数据库在一定时间内会共存.
任何事物都有存在原因.
新事物代替旧事物是必然.
00与数据库,
就社会主义的中国与资本主义的西欧与美国.
在一定时间内共存,互补.
中国向美国与西欧学习.
而美国与西欧在某些方面借鉴了中国.

云计算,的弱数据和你说的理念不同。云计算的数据用字节码直接换存在晕中,当有Node脱离云的时候,自动实现备份到磁盘或者固定介质。

而你说的OO理念在这里面根本就是不存内在的,如果说把云中的数据按照object关系理念控制,那么势必要关系到连接问题,那样的话,就要用到graphic model区建立关系,那是不可能的,也不是云计算所追求的。

还有,就拿hibernate的做法来说,经常出现整个表的属性提出,多次读写,其实,在小项目中不显眼,当进入大型系统时候,那就是致命的性能弊病所在。

我这么说吧,你看看linkedin用hibernate了没?在他的原本ppt中,很强盗用的就是JDBC,这就是为什么你所谓的弱数据库理念太理想化的原因。

hibernate这类产品,本身就是伪数据库,没有那么高校的数据库检索机制。简单的说就是,如果想通过一些表设计,或者是关系改变,甚至是存储过程来增加性能,而在用了hibernate这类的系统之后,就会增加性能优化复杂度,测试复杂度,等等问题。

在你所谓的OO数据理念中,根本不可能有准则可循,只是一种懒人做法,而这种懒得结果会带来更多的麻烦。

再说一句,如果说没有真正的底层OO数据库,来实现弱化ERD问题的话,现存的所有类似hibernate这类的产品都是一种累赘。

通过JDBC封装到Object层面一样是可以的,而且这是一种使用数据库的方法,而中间添加的Hibernate不过是一种障眼法,最终只能是画蛇添足。希望大家做分析的时候面向OO但是,底层解决方案不能抛弃ERD数据库。

是当使用缓存是必然的,但是这跟什么所谓的弱数据库概念车不上关系。缓存最终还是要存储,不能总放在缓存中。云计算也一样,云中的数据最终还是要被村在某个地方,当云从新初始化之后,还要从新构建原来的云的内容。而数据之间的关系,需要利用书库中的检索形式和模型。就算amamzon,google,sun grid这类系统,一样需要数据库对一个对象的属性来存储和检索。

简单的举个例子,你就算放在磁盘上,一样磁盘系统本身也在维护一个小型数据库,你可以根据一些属性来进行排序和检索。

数据库无处不在。banq你要是说喜欢java设计开源,我们都接受,但是,没有哪个开源的作者,向你如此办的疯狂发表言论,你看看就算hibernate的创始人,也没有你这么不净思索的下一些定义。不是说theserverside的东西都是什么权威,权威的都在IEEE了,你要是有本事就从IEEE里面找一片跟你一件相同的paper,然后再来说山。

要是说出书赚钱,就算了,按郭德刚的话来说就是,能出书的不见得有好知识,有好知识的人不见得出书!

恕我直言,我觉得楼上思维比较死板。

>是当使用缓存是必然的,但是这跟什么所谓的弱数据库概念车不上关系。缓存最终还是要存储,
不错,现在OO技术都基于数据库的,就像我们所有软件都基于操作系统一样,那么在我们实际软件开发阶段,操作系统不是相当于弱化了吗? 难道我们开发企业ERP或一个web2.0网站时,设计时还要考虑服务器windows或linux操作系统的API吗?数据库现在就沦为操作系统一个级别。这对于我们企业软件当然是一种弱化。

显然,我们要树立向上思维,站在前人基础上,在这个上面,你就要“无”的概念,对以前的知识都要“无”,这样,你才能专心精力使用OO方法关注你的需求。

否则,一个需求来了,你要搬来操作系统、汇编语言 数据库技术等大批资料,等你掌握这些,也许需求早就变了。

http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=34593&message=23116648#23116648
[该贴被banq于2008-09-01 11:54修改过]

<不错,现在OO技术都基于数据库的,就像我们所有软件都基于操作系统一样,那么在我们实际软件开发阶段,操作系统不是相当于弱化了吗?>

数据库技术就是数据的管理技术,不管以后变换成什么概念都不会忽视现在数据库的成果。
操作系统不是相当于弱化了吗?首先操作系统依然是软件,只是软件有了不同的分工,变得更加霸道只是我们开发的应用软件中不必关注到这个层面,但是软件的运行必需依赖软件运行的环境。我先声明不是说这样不好,而是更加有利于应用软件的开发。
应用软件的开发还需要程序员自己去处理数据的存储,就不可能达到banq所认为的弱化。这样的弱化不是不需要处理这些问题了,而是别人有了成熟的管理方案,在开发的时候我们不必去关注而已,而是软件的分工更明确了,将数据存储的从应用程序设计剥离出去吧了。再说了就算剥离出去了并不是说不用数据库来存储了,现在OO技术都基于数据库的正说明了这点,只是处理这种映射的中间件还不成熟吧了
[该贴被bookview于2008-08-31 20:36修改过]

数据库有很多的不同的意义,前面所讨论的数据库基本是指关系型数据库,但现在有面向对象型数据库了,从表面上讲都叫数据库,但是意义不一样。

期待banq的回复