免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3341 | 回复: 9
打印 上一主题 下一主题

消息群發,數據表設計規則 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-20 15:41 |只看该作者 |倒序浏览
消息群發,數據表設計規則                                                                                                                                                                                                                                                                                                                        要設計一個消息群發的模塊,用戶在看完消息后可以標識一個消息已查看過了
主要數據表的思路有:
  • id, fromid, toid, state 當群發時,就添加所有用戶量的數據   用戶數量大時20w,將添加20w條
  • id, fromid, toid, state 當群發時,就添加一條消息記錄,並且所用戶ID添加到toid字段中   同樣,用戶數量大時20w,toid的字段類型不知道能不能儲存這麼長的用戶id
  • 這種方式和第二種差不多,只是採用分批方式,就是個toid里只能放100個用戶id,當用於時,則再接著添加一條記錄
  • 分成兩個表:消息表:id, formid, toid;用戶消息狀態表:id, userid, readmessageid,其中readmessageid用來記錄用戶已讀取過的消息id
哪種方案好一點呢,大家覺得呢?

[ 本帖最后由 71896532 于 2007-11-20 16:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-11-21 08:41 |只看该作者
怎麼老半天都沒個人影啊.:em11:

论坛徽章:
0
3 [报告]
发表于 2007-11-21 14:44 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2007-11-21 18:23 |只看该作者
研究下dz的短信功能

论坛徽章:
0
5 [报告]
发表于 2008-11-26 16:47 |只看该作者
表名:ToAll_Message
群发表

序号        列名        数据类型        长度        小数位        标识        主键        允许空        默认值        说明
1        Id        int        8        0                √                        自增ID
2        MessageType        int        4        0                                        0公告消息1系统消息
3        MessageTitle        varchar        50                                                消息标题
4        MessageContent        varchar        Max                                        消息内容
5        IsDel        bit                                                false        是否删除
6        Important        int                                                        重要程度
7        CreateTime        Datetime                                        GetDate        消息添加时间


表名:MessageReaderInfo
群发消息阅读表
序号        列名        数据类型        长度        小数位        标识        主键        允许空        默认值        说明
1        MessageId        int        8        0                                        群发消息ID
2        UserName        nvarchar        50                                                用户名
3        ReadTime        DateTime                                                GetDate        阅读消息时间

所有用户都访问ToAll_Message得到所有系统发送的消息

论坛徽章:
0
6 [报告]
发表于 2008-11-26 16:48 |只看该作者
表名:ToAll_Message
群发表

序号        列名        数据类型        长度        小数位        标识        主键        允许空        默认值        说明
1        Id        int        8        0                √                        自增ID
2        MessageType        int        4        0                                        0公告消息1系统消息
3        MessageTitle        varchar        50                                                消息标题
4        MessageContent        varchar        Max                                        消息内容
5        IsDel        bit                                                false        是否删除
6        Important        int                                                        重要程度
7        CreateTime        Datetime                                        GetDate        消息添加时间


表名:MessageReaderInfo
群发消息阅读表
序号        列名        数据类型        长度        小数位        标识        主键        允许空        默认值        说明
1        MessageId        int        8        0                                        群发消息ID
2        UserName        nvarchar        50                                                用户名
3        ReadTime        DateTime                                                GetDate        阅读消息时间

所有用户都访问ToAll_Message得到所有系统发送的消息
根据MessageReaderInfo可以知道哪些系统消息你阅读过

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2008-11-26 23:56 |只看该作者
如果存在较大量的消息的话,建议不要把鸡蛋放在一个篮子里。

最好给每个人一个小篮子,然后给每个人放一个小蛋蛋进去。

论坛徽章:
0
8 [报告]
发表于 2008-11-27 11:05 |只看该作者
其实思路无非就是先按照范式建表,然后缓存+加静态化

论坛徽章:
52
码神
日期:2017-03-28 10:27:10综合交流区版块每日发帖之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-09-28 06:20:00综合交流区版块每日发帖之星
日期:2015-09-22 06:20:00每日论坛发贴之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-08 06:20:00综合交流区版块每日发帖之星
日期:2015-09-05 06:20:00综合交流区版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-09-01 10:41:53每日论坛发贴之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-10-12 06:20:00
9 [报告]
发表于 2008-11-27 13:16 |只看该作者
2007年11月份的问题

论坛徽章:
0
10 [报告]
发表于 2008-11-28 15:12 |只看该作者
消息主表一张,如果消息量很大建议对消息主表分表,以fromid来hash分表,表名:msg_main;
字段
id ,fromid,content,times

另一张为分发表,建议按接收人hash分表
msg_main_id,fromid,toid,times
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP