论坛首页 综合技术论坛

探讨用存储过程的优劣

浏览 84685 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-01-18  
xiaoshan5634 写道
比如说customer表,我们有一个功能使用的非常频繁,这个功能有20来个查询条件,而且还有需要使用对大字段使用like,当然like部分已经用Lucene实现了。都放入缓存中,可是需要查询customer表中的记录怎么办呢?
查询字段:客户编码,关键字1,关键字2,电话号码,邮件地址,手机号码,区号,客户地址还有很多字段为查询条件。


读写分离,为此部分查询提供只读数据。这样主系统的压力就会减小。
客户编码等这些检索字段,尽可能短,尽量固定长度(比如用char类型),建索引。Lucene不是很熟,但是我看过有人用Sphinx结合mysql做的全文搜索,看上去性能不错。

开会了,回头继续探讨。
0 请登录后投票
   发表时间:2011-01-18  
存储过程要写的好的话,还是很顶的,现在有些MIS系统都是JS调存储过程了,基本开发人员很少写java代码,但是几千上万行的存储过程放在一个文件里头,没有规范的命名,众多的IF ESLIF,没有注释或者注释乱写,非常讨厌把不要的代码都放在系统当中。。。
当然测试和代码审查比较牛逼的公司除外
0 请登录后投票
   发表时间:2011-01-19  
引用

但对数据不多规则却非常复杂的操作,明显是Java更方便一点


我的理解恰恰相反,SP适合的就是数据不多但业务逻辑非常复杂的操作,用SP编译,调试非常快,在JAVA里写,错误不容易发现。
对于大数据量的操作,在JAVA上处理反而无所谓了。

我的一个核心理解,业务逻辑要无限贴近数据,中间不要存在其他环节,至少不要存在一个需要随着业务逻辑变化而需要调整或配置的中间环节。

0 请登录后投票
   发表时间:2011-01-19  
govista 写道
引用

但对数据不多规则却非常复杂的操作,明显是Java更方便一点


我的理解恰恰相反,SP适合的就是数据不多但业务逻辑非常复杂的操作,用SP编译,调试非常快,在JAVA里写,错误不容易发现。
对于大数据量的操作,在JAVA上处理反而无所谓了。

我的一个核心理解,业务逻辑要无限贴近数据,中间不要存在其他环节,至少不要存在一个需要随着业务逻辑变化而需要调整或配置的中间环节。



调试,即便是oracle的存储过程也不会有随便哪种高级语言好调试。当然主要是人不好找,成本的问题和维护的问题。
0 请登录后投票
   发表时间:2011-01-19  
xieye 写道
govista 写道
引用

但对数据不多规则却非常复杂的操作,明显是Java更方便一点


我的理解恰恰相反,SP适合的就是数据不多但业务逻辑非常复杂的操作,用SP编译,调试非常快,在JAVA里写,错误不容易发现。
对于大数据量的操作,在JAVA上处理反而无所谓了。

我的一个核心理解,业务逻辑要无限贴近数据,中间不要存在其他环节,至少不要存在一个需要随着业务逻辑变化而需要调整或配置的中间环节。



调试,即便是oracle的存储过程也不会有随便哪种高级语言好调试。当然主要是人不好找,成本的问题和维护的问题。


sp是过程语言,实际中调试起来比java方便很多。
0 请登录后投票
   发表时间:2011-01-19  
为什么这么多人都认为Java代码不如存储过程好调试测试呢?单元测试和断点调试怎么着都是Java代码好调呀。
0 请登录后投票
   发表时间:2011-01-19  
glovebx 写道
xieye 写道
govista 写道
引用

但对数据不多规则却非常复杂的操作,明显是Java更方便一点


我的理解恰恰相反,SP适合的就是数据不多但业务逻辑非常复杂的操作,用SP编译,调试非常快,在JAVA里写,错误不容易发现。
对于大数据量的操作,在JAVA上处理反而无所谓了。

我的一个核心理解,业务逻辑要无限贴近数据,中间不要存在其他环节,至少不要存在一个需要随着业务逻辑变化而需要调整或配置的中间环节。



调试,即便是oracle的存储过程也不会有随便哪种高级语言好调试。当然主要是人不好找,成本的问题和维护的问题。


sp是过程语言,实际中调试起来比java方便很多。


没觉得存储过程调试比JAVA方便,ORALCE的还好些,你试试DB2存储过程的调试看看
0 请登录后投票
   发表时间:2011-01-19  
flex的速度远比不上html,html的前端效果现在做得也是不错的
0 请登录后投票
   发表时间:2011-01-19  
glovebx 写道
xiaoshan5634 写道
比如说customer表,我们有一个功能使用的非常频繁,这个功能有20来个查询条件,而且还有需要使用对大字段使用like,当然like部分已经用Lucene实现了。都放入缓存中,可是需要查询customer表中的记录怎么办呢?
查询字段:客户编码,关键字1,关键字2,电话号码,邮件地址,手机号码,区号,客户地址还有很多字段为查询条件。


读写分离,为此部分查询提供只读数据。这样主系统的压力就会减小。
客户编码等这些检索字段,尽可能短,尽量固定长度(比如用char类型),建索引。Lucene不是很熟,但是我看过有人用Sphinx结合mysql做的全文搜索,看上去性能不错。

开会了,回头继续探讨。

Sphinx结合mysql做全文搜索,建索引的速度比Lucene快很多,但他只支持utf-8,了对中文的支持不是很好,它还有一个弊端就是一定要跟mysql结合使用,现在我们使用db4o+Lucene,而主数据库用sql server。Sphinx一定要结合mysql,所以要换的话还是由点麻烦的。
0 请登录后投票
   发表时间:2011-01-19  
liulanghan110 写道

没觉得存储过程调试比JAVA方便,ORALCE的还好些,你试试DB2存储过程的调试看看

不知道你有没有真正的使用过存储过程,他的调试绝对要比java调试简单方便,纯粹只考虑代码编写的速度而言,用存储过程写花费的时间比java代码的时间少的多。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics