- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
短信调用系统的设计和实现
摘要:随着公司短信业务的增加,基于数据管理人员手工调用短信数据的模式已不再适用。因此公司决定开发一套《短信调用系统》,由业务人员自己操作,方便、快捷地进行短信调用。《短信调用系统》的实施,成功地解决了公司面临的问题。
关键词:短信调用;SQL性能优化;大批量数据快速导出;快速去重
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)20-4805-03
随着公司规模的不断扩大,作为公司产品的数据的规模、信息的深度及广度也随之扩张,公司的数据库管理人员承担着日益繁重的工作。
1 问题描述
短信调用原来的工作方式是由短信运营人员将调用要求提交给数据管理人员,再由数据管理人员在PL/SQL中写SQL代码,将满足条件的短信数据调出,交给短信运营人员。这种工作方式所产生的问题是:
1)由于项目多,数据管理人员需要经常加班。
2)调用条件多,不规范,只要数据管理人员有一个条件漏掉,就会将数据调用条件弄错,从而产生客户投诉。
在这种背景下为了减少数据管理人员工作量,满足公司的大批量的短信项目调用需求,自主开发了短信调用系统。
2 系统总体设计
系统流程如图1所示。
1)相关技术
后台数据库:Oracle 10g;前台软件:Delphi 6.0;体系结构:C/S;计算机语言:Sql、Object Pascal。
2)功能设置
基本信息:记录项目的基本信息,项目负责人,调用条件
运作情况:一个项目可能调几批数据,按城市或条件,记录每个批次的调条件和数量。
去重功能:与以前运作过的项目数据进行去重,以前已经发过的数据要滤掉,由于是短信数据,所以手机号是没有重复的,唯一的,自身没重复。
查询数量:确定条件,查询数据量
保存数据:查询好的数据保存到项目临时表
数据导出:项目数据导出为CSV文件,交给负责运营的人员
数据回库:将调出的数据写入到项目数据表op_smsdata_auto中
样本提取:提取已运作好的项目样本数据给客户。
3)实现要点
调用条件的确定;调用小表的生成;查询数据量的函数;保存数据的存储过程;数据导出程序;写入项目数据表的存储过程。
3 系统功能实现
1)后台表设计
短信调用项目表:op_projinfo(projid 项目流水号,projname 项目名称,projdate 项目日期, principalid 项目负责人ID,princalname 项目负责人,princalname希望数量,deliverdesire调用条件,realsendqty 实际调出数量);一次数据调用对应一个项目。
项目批次表:op_smsproj(smsprojid 批次流水号,sendbatch 批次序号,projid 项目ID,createdate 创建日期,removeproj 去重ID ,realcustomercount 实际调用数量,transferflag 导出标志);一个项目可能对应几个批次数据。
调表条件表:op_smsremark(smsremarkid 记录流水号,projid 项目ID,batchid 调用批次序号,parameters 查询参数, querystring 查询SQL, demand 查询要求, lastqty 调出数量,removedupprojlist 去重项目, fieldorrelation 或关系字符串 );记录每次查询和调用的条件,以备查询。
项目数据表:op_smsdata(projid 项目ID,customerid 客户ID,mobile 手机,importbatch 数据批次);记录调出数据。
2)确定调用条件为基本信息,车主信息,楼盘信息三大类,具体条件如图2所示。
3)调用小表的生成
公司数据的情况是所有手机数据都在客户数据表b2c_customer中,这张表很大,有1亿多条记录,另外还有两个相关联的楼盘表b2c_building和车主表b2c_carexpens。客户表是按城市区号进行分区的,人工调取数据时会根据分区进行查询和调用,会根据条件和楼盘表、车主表连查,会做很多临时表以便提高速度,减少调用时间。这三张表都会经常做增加,更新操作。根据这种情况,将客户数据表按区号生成328个调用小表,同时将车主信息整合到查询小表中,因为楼盘表数据量不大,两表连查时并不耗费时间,所以就没将楼盘表整到调用小表中。
生成调用小表的的存储过程是B2c_Query_Recreate,其功能按区号循环生成调用基础表,其关键代码如下:
execute
文档评论(0)