• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

利用序列减少软件测试开发技术之Oracle数据库开发工作量

发布: 2009-9-11 10:41 | 作者: 不详 | 来源: 领测软件测试网 | 查看: 22次 | 进入软件测试论坛讨论

领测软件测试网

需求二:设置开始的序列号。

  有时候程序员对于序列开始的数字也有额外的要求。如有些是为了序列的为数的统一,如序列号都是10位数等等。但是如果需要号从1开始,就不能够保证关键字长度的统一。如从1开始到10000,其长度就会长短不一,这对于应用程序取值为造成一定的难度。为此程序员在开发的时候可能会要求所有的关键字都必须是10位数字。此时就需要指定序列号开始的值。如可以把序列号开始的值设置为1000000001。那么在以后递增的时候,就,能够保证其关键字都为10位数字。如果不放心的话,可以再设置一个最大值。不过笔者不建议这么做。虽然对于大部分企业来说,这个十位数字已经足够其应用。但是为了保险起见,还是不要设置最大值为好。虽然不设置最大值可能会造成关键字位数的不统一,但是相比其关键字耗竭超过最大值从而造成应用程序错误来说,这个统一原则还是可以退一步的。

  另外,有时候在流水号编制的时候,可能还需要区分担据的类别。此时也需要管理员指定序列的起始值。如选择有这种情况,企业的销售订单主要分为正常订单与特价订单,而企业现在销售订单是通过流水号来进行编码。为了区分两种不同的订单情况,在生成流水号的时候有要求。如对于正常的订单,则流水号从100000到899999;而如果是特价的销售订单,则流水号从900001到999999。每个月周而复始一次。此时,就需要把序列功能跟其他应用结合。不过主要还是靠序列在发挥作用。为此需要为每种情况设置一个起始值。然数据库自从根据单据类别的不同调用不同的序列。

  如果要实现对于起始值的控制,则需要利用参数START WITH。在这后面设置起始值,可以方便用户根据实际情况来设置起始值。笔者以前遇到过一个系统,在这方面设计的很好。这个系统有一个应用字典平台。用户可以通过这个平台来设置Oracle数据库序列的起始值。而不需要每次调整都从数据库中去调整。这大大提高了程序设计的灵活性。

  在设置这个起始值的时候,需要跟上面提到的这个参数挂钩。如果序列是从小到大生成的,则在这里就是要设置其最小值。相反如果序列是从大到小生成的,则这里设置的就是其最大值。以前有人就在这里犯过一个愚蠢的错误。他设置的时候是让序列从小到大生成的,并且有边界的设置。但是这里初始值设置的时候,则设置了一个最大值。结果这个值还没怎么用系统就报错了。这主要是笔误。为此管理员在设置这个初始值的时候,最好能够再回过头去看看序列的生成模式,是按顺序生成还是倒序生成。

  需求三:要确保序列号的连续。

  有时候,如在财务凭证编号上,系统要确保这个流水号必须是连续的。此时如果使用这个序列来作为流水号的生成机制的话,那么能否实现所有的序列号都是连续的呢?为了保证实现这个目的,那么就需要设置CACHE参数。

  CACHE这个参数主要用来指定在高速缓存中可以预先分配的序列号个数。这是什么意思呢?也就是说,如果这个数字为20的话(默认为20),那么Oracle一启动的时候就会自动生成20个序列号放在高速缓存中。当应用程序需要使用的时候,就可以马上从高速缓存中拿来使用。从而可以提高应用程序的性能。当这个20个序列号用完以后,数据库会再生成20个序列号存入到数据库的高速缓存中。很明显,这么设计就是为了提高数据库的性能。可是也会带来一个副作用。如系统在高速缓存中已经生成了20个序列号(从1991到2010)。而实际上只用了15个(如用到2005)。此时如果数据库因为维护或者其他原因需要重新启动数据库。此时高速数据缓存中的内容就会丢失。重新启动后Oracle数据库又会生成20个序列号,此时序列号的顺序为2011到2030。很明显此时2006到2010中间就会断号。为此如果需要保证连号的话,就需要把这个参数设置为Nocache,即不允许预先在高速缓存中生成序列号。这会降低数据库的性能,但是可以保证序列号的连续性。不会因为数据库重新启动或者其他原因而导致序列号(流水号)断号。

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网