上周有个需求,就是要做一个检索库:
1 3亿个手机号码,并且每个号码20个左右的属性例:地区,订阅等信息。
2 在最短的时候内select出来(5分钟,10分钟)[最重要]
3 允许更新。对这些号码进行发送信息后,状态改变。[可以让他慢慢更新]
和几个同事讨论了一下,具体要注意以下几点:
1 如果发送下去状态改变,但是只发送一半,但状态改变了如何办?
2 如果多个产品线一起下发,状态会不会混乱。
解决以上第二个问题,决定采用,队列等待的方式。第一个问题没想到好的解决办法,回滚也想过了,但感觉不是很现实!
解决方案:
经过实验500w条的数据在用plsql直接select,只需要0.2秒,所以总体采用分表的方式,每500w条分一个表,然后同时查询!
但总感觉不是很好,抛砖引玉(真的很砖 :D )。不知道大家有没有更好的解决方案!
-----------------------------------------重新描述一下需求-------------------------------
很多人说需求不是很的清楚,这里重新整理了一下!
不过要注意的是数据库里已经有3亿个手机基数了!
一. 号码入库。
不定期会有新的号码需要入库,入库需要记录号码的常规属性,如:手机号,省份,城市,入库时间,手机卡类型,是否支持彩信,号码来源情况等。
二. 入库手机号源文件管理
入库手机号源文件要以文件形式保存在服务器上。
三. 按需要提取号码(最关键部分)
要按照需求提取所需的号码。
例如:
提号要求:
1.此号码非黑名单用户。
2.此号码为的订购和退订用户。
3.此号码2个月内没有活动。
4.省份要求:辽宁,云南,广东
5.号段要求:137和138和139号段
6.数量要求:每个省10w
7.是否支持彩信:是(是,否,忽略三种情况)
……
最后,符合条件的号码,按照固定格式(每个手机号占一行),形成文本文件,将此文件测试号码,是否需要状态报告等信息形成最终可发送文件并提供下载功能,同时记录本次提取信息(发送时间,发送标识等)
注:文件格式如下:
139***85185#09#0
139***71283
139***33190
第1列:手机号
第2列:产品类型(#09)
第3列:是否需要状态报告(#0)
四. 统计功能
一.号码情况统计
1.统计当前号码总量。
2.按照2个基本要求,统计现在库中可以使用的号码数量。
注:统计需要显示,全国总量,各省总量,各省省会总量,各省去除省会总量,各省7天未下发总量(省会与其他城市分开显示),各省可以发送总量(省会与其他城市分开显示,所以单独列出来)。
二.发送产品统计
1.按时间段、业务线等统计发送产品的情况,如:发送时间,最终发送文件等
五. 黑名单及特殊号码管理
1. 添加黑名单
2. 去除黑名单
3. 过滤黑名单
4. 查询黑名单
以上除黑名单外都是迫切需要的,黑名单功能可以以后完善。
1 3亿个手机号码,并且每个号码20个左右的属性例:地区,订阅等信息。
2 在最短的时候内select出来(5分钟,10分钟)[最重要]
3 允许更新。对这些号码进行发送信息后,状态改变。[可以让他慢慢更新]
和几个同事讨论了一下,具体要注意以下几点:
1 如果发送下去状态改变,但是只发送一半,但状态改变了如何办?
2 如果多个产品线一起下发,状态会不会混乱。
解决以上第二个问题,决定采用,队列等待的方式。第一个问题没想到好的解决办法,回滚也想过了,但感觉不是很现实!
解决方案:
经过实验500w条的数据在用plsql直接select,只需要0.2秒,所以总体采用分表的方式,每500w条分一个表,然后同时查询!
但总感觉不是很好,抛砖引玉(真的很砖 :D )。不知道大家有没有更好的解决方案!
-----------------------------------------重新描述一下需求-------------------------------
很多人说需求不是很的清楚,这里重新整理了一下!
不过要注意的是数据库里已经有3亿个手机基数了!
一. 号码入库。
不定期会有新的号码需要入库,入库需要记录号码的常规属性,如:手机号,省份,城市,入库时间,手机卡类型,是否支持彩信,号码来源情况等。
二. 入库手机号源文件管理
入库手机号源文件要以文件形式保存在服务器上。
三. 按需要提取号码(最关键部分)
要按照需求提取所需的号码。
例如:
提号要求:
1.此号码非黑名单用户。
2.此号码为的订购和退订用户。
3.此号码2个月内没有活动。
4.省份要求:辽宁,云南,广东
5.号段要求:137和138和139号段
6.数量要求:每个省10w
7.是否支持彩信:是(是,否,忽略三种情况)
……
最后,符合条件的号码,按照固定格式(每个手机号占一行),形成文本文件,将此文件测试号码,是否需要状态报告等信息形成最终可发送文件并提供下载功能,同时记录本次提取信息(发送时间,发送标识等)
注:文件格式如下:
139***85185#09#0
139***71283
139***33190
第1列:手机号
第2列:产品类型(#09)
第3列:是否需要状态报告(#0)
四. 统计功能
一.号码情况统计
1.统计当前号码总量。
2.按照2个基本要求,统计现在库中可以使用的号码数量。
注:统计需要显示,全国总量,各省总量,各省省会总量,各省去除省会总量,各省7天未下发总量(省会与其他城市分开显示),各省可以发送总量(省会与其他城市分开显示,所以单独列出来)。
二.发送产品统计
1.按时间段、业务线等统计发送产品的情况,如:发送时间,最终发送文件等
五. 黑名单及特殊号码管理
1. 添加黑名单
2. 去除黑名单
3. 过滤黑名单
4. 查询黑名单
以上除黑名单外都是迫切需要的,黑名单功能可以以后完善。