锁定老帖子 主题:一次小项目的思考
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-25
最后修改:2009-08-25
ray_linn 写道 TheMarine 写道 但是我们使用缓存,为什么非得在1秒内执行完呢?
1. 缓存是种中立技术,无论采用app或者采用SP,都可以使用。 2. 缓存是会“脏”的,越繁忙的系统,缓存就越容易“脏”。 3. 集群缓存技术更复杂,也更容易“脏”。 有道理,兄台从实际出发,现阶段数据库在某些领域确实还是不可动摇.我在前面回复也说过,思想是不错,但是很难实现,过于理想.原文当中的描述,就是非常理想化的,缓存不考虑脏,内存成本和内存管理成本不考虑,故障导致的内存数据丢失不考虑,等等;如果可以很好的解决这些,应该还是正确的方向吧. 但是兄台不能否认数据库确实已经是瓶颈,再如何的调优在单机上都是有极限的. |
|
返回顶楼 | |
发表时间:2009-08-25
TheMarine 写道 ray_linn 写道 TheMarine 写道 但是我们使用缓存,为什么非得在1秒内执行完呢?
1. 缓存是种中立技术,无论采用app或者采用SP,都可以使用。 2. 缓存是会“脏”的,越繁忙的系统,缓存就越容易“脏”。 3. 集群缓存技术更复杂,也更容易“脏”。 有道理,兄台从实际出发,现阶段数据库在某些领域确实还是不可动摇.我在前面回复也说过,思想是不错,但是很难实现,过于理想.原文当中的描述,就是非常理想化的,缓存不考虑脏,内存成本和管理成本不考虑,故障导致的内存数据丢失不考虑,等等;如果可以很好的解决这些,应该还是正确的方向吧. 但是兄台不得不否认数据库确实已经是瓶颈,再如何的调优在单机上都是有极限的. 理论上,SQL调优比APP调优更简单吧,这是SP的一大优势。在面向对象里调优SQL语句更复杂,很多语句都不是人所能控制的。 |
|
返回顶楼 | |
发表时间:2009-08-25
ray_linn 写道 rainlife 写道 TheMarine 写道 但是我们使用缓存,为什么非得在1秒内执行完呢?
这正是我上面回复的,提出一个比较极端的问题,以此说明app无济于事。但事实上,采用app,并非是为了能够让db在1秒钟能够处理完10000条insert或10000条update。 从执行效率上看,SP永远是冠军。 呵呵,从执行效率上来说,写010101,绝对的冠军。不过,应该还没有人用pl sql来写个web application吧。呵呵,扯蛋的说法了, ray_linn兄莫怪啊。 |
|
返回顶楼 | |
发表时间:2009-08-25
最后修改:2009-08-25
rainlife 写道 ray_linn 写道 rainlife 写道 TheMarine 写道 但是我们使用缓存,为什么非得在1秒内执行完呢?
这正是我上面回复的,提出一个比较极端的问题,以此说明app无济于事。但事实上,采用app,并非是为了能够让db在1秒钟能够处理完10000条insert或10000条update。 从执行效率上看,SP永远是冠军。 呵呵,从执行效率上来说,写010101,绝对的冠军。不过,应该还没有人用pl sql来写个web application吧。呵呵,扯蛋的说法了, ray_linn兄莫怪啊。 从我周围的应用来说,有很多intranet web application都是JDBC+SP的,通常这些系统的数据压力都比较大,比如Sales下单的系统,生产线物料系统。 我本来也是APP的绝对拥趸,后来还是TOM那本<oracle高级编程>的影响。 |
|
返回顶楼 | |
发表时间:2009-08-25
我个人觉得,数据库真的太累了!我刚学开发,时间不久。在我们公司我大部人员特别依懒于数据库,我觉得不是特别好!至少我的程序要比他们快,或许是我实现在了我自己人的一个开发环境我有一个不上的缓冲区进行支持,他们从来不用!
|
|
返回顶楼 | |
发表时间:2009-08-25
ray_linn 写道
ubotutwin 写道
ray_linn 写道
楼主去用hibernate去做个总分轧平吧,
横向按账户的借贷方,纵向按科目,科目有借方科目,贷方科目,借贷双方科目,某些科目的借方 要与另外一些科目的贷方相当。
就从这一句就知道你对编程的理解很浅薄,你以为你罗列的zhe这些复杂的条件限制你用个procedure写出来是很强的事?搞清楚,越是复杂的逻辑越是高级语言的强项!要用存储过程完成那些十分复杂的逻辑不论在语言支持上还是库支持上都不行。最简单的道理就是--要是存储过程真的能干,那世界前三的编程语言为什么没有tsql、plsql这些语言?别告诉我说这些语言不能写web,不能写ui什么的,它们都能,可是没人会用它们来完成这些功能。
在中国“结构化查询语言”的意义和“为人民服务”一样都是被理解的变了味道的东西。高级语言好比大客车,sql好比大货车,客车用来载人,货车用来载货,但在一些地方也能看到一群群的农民工们挤坐在货车后面的车厢上,那能说这就是合理的?货车载人就是“坚若磐石”的真理?还是各司其职才能充分发挥各自的长处吧。
再有,别再拿国内那几个落后的电信bss提供商说事了,他们的架构无一不是购买或抄袭国外90年代的过时技术,它们代表的只是落后而已。at&t和思科前几年个系统构型就已经是领域优先的了。
买CICS和Tuxedo的都是傻子吧?
存储过程操作数据库很快,起码比oci、odbc、jdbc等等这些快。存储过程调试很方便,很容易发现问题和修改。存储过程对异构平台的融合十分有利。
再有,要用存储过程可别拿性能说事,真正对性能要求达到顶点的项目照样都是高级语言做的,比如电信的在线计费系统,道理很简单,一、用c++我们可以人为控制关键数据进内存的动作,现在过程还没有这个功能,二、像c、c++这些语言编译出来的是直接运行的机器码,存储过程不是。
真正对项目性能影响最大的一是sql语句的质量,二是代码的质量。记住,java或c#写的高质量代码的性能是远超plsql或tsql写的低质量的代码的性能的,而用高级语言,尤其是oo语言可以相对容易的写出高质量的代码。至于单独的sql语句的性能你在高级语言里写不好,在过程里也写的好不到哪去~~ |
|
返回顶楼 | |
发表时间:2009-08-25
其实还是要考虑国情的。在立足国情的大背景下,存储过程的重要性,是不言而喻滴。
对于大多数人来说,我们没法去考虑最先进的技术。 就如中国的航空发动机,目标只是在十年内赶上美国上世纪80年代技术水平,没办法,这是大环境决定的。 软件业是服务业,这个宗旨得牢记 |
|
返回顶楼 | |
发表时间:2009-08-25
完全支持楼上。
我们公司正在把所有存储过程的东西往JAVA转。 转到了java层面,才能通过分布式扩展系统性能,否则押宝在数据库上,优化带来的效果实在有限。 |
|
返回顶楼 | |
发表时间:2009-08-25
最后修改:2009-08-25
ray_linn 写道 我本来也是APP的绝对拥趸,后来还是TOM那本<oracle高级编程>的影响。
赞一个!绝大多数发对数据库的,其实未成真正理解数据库。数据库也有cache,还有各种各种的数据库。不了解的人容易偏激,缺乏评价能力,乱说。 |
|
返回顶楼 | |
发表时间:2009-08-25
rain2005 写道 小型项目可以,大型项目就别想了。
一般大型的企业应用都是由资深业务人员(这些人只注重业务,不注重技术)定的数据库结构,开发根本主导不了。这就是国内的现状。 这也反映了一个事实,现在技术不值钱(除非是大牛),业务值钱,很多公司也只注重业务,对技术人员根本不重视。 |
|
返回顶楼 | |