“站内信”不同于电子邮件,电子邮件通过专门的邮件服务器发送、保存。而“站内信”是系统内的消息,说白了,“站内信”的实现,就是通过数据库插入记录来实现的。
“站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一 条件的用户群)群发消息。点到点的消息传送很容易实现,本文不再详述。下面将根据不同的情况,来说说“站内信”的群发是如何实现的。
第一种情况,站内的用户是少量级别的。(几十到上百)
这种情况,由于用户的数量非常少,因此,没有必要过多的考虑数据库的优化,采用简单的表格,对系统的设计也来的简单,后期也比较容易维护,是典型的用空间换时间的做法。
数据库的设计如下:表名:Message
ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);Message:站内信内容;Statue:站内信的查看状态;PDate:站内信发送时间;
如果,某一个管理员要给所有人发站内信,则先遍历用户表,再按照用户表中的所有用户依次将站内信插入到Message表中。这样,如果有56个用户,则群发一条站内信要执行56个插入操作。这个理解上比较简单,比较耗损空间。
某一个用户登陆后,查看站内信的语句则为:
Select * FROM Message Where RecID=‘ID' OR RecID=0
第二种情况,站内的用户中量级别的(上千到上万)。
如果还是按照第一种情况的思路。那发一条站内信的后果基本上就是后台崩溃了。因为,发一条站内信,得重复上千个插入记录,这还不是最主要的,关键是上千 乃至上万条记录,Message字段的内容是一样的,而Message有大量的占用存储空间。比方说,Message字段有100个汉字,占用200个字 节,那么5万条,就占用200×50000=10000000个字节=10M。简单的一份站内信,就占用10M,这还让不让人活了。
因此,将原先的表格拆分为两个表,将Message的主体放在一个表内,节省空间的占用
数据库的设计如下:
表名:Message
ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);MessageID:站内信编号;Statue:站内信的查看状态;
表名:MessageText
ID:编号;Message:站内信的内容;PDate:站内信发送时间;
在管理员发一封站内信的时候,执行两步操作。先在MessageText表中,插入站内信的内容。然后在Message表中给所有的用户插入一条记录,标识有一封站内信。
这样的设计,将重复的站内信的主体信息(站内信的内容,发送时间)放在一个表内,大量的节省存储空间。不过,在查询的时候,要比第一种情况来的复杂。
第三种情况,站内的用户是大量级的(上百万),并且活跃的用户只占其中的一部分。
大家都有这样的经历,某日看一个网站比较好,一时心情澎湃,就注册了一个用户。过了一段时间,由于种种原因,就忘记了注册时的用户名和密码,也就不再登陆了。那么这个用户就称为不活跃的。从实际来看,不活跃的用户占着不小的比例。
我们以注册用户2百万,其中活跃用户只占其中的10%。
就算是按照第二种的情况,发一封“站内信”,那得执行2百万个插入操作。但是其中的有效操作只有10%,因为另外的90%的用户可能永远都不会再登陆了。
在这种情况下,我们还得把思路换换。
数据库的设计和第二种情况一样:
表名:Message
ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);MessageID:站内信编号;Statue:站内信的查看状态;
表名:MessageText
ID:编号;Message:站内信的内容;PDate:站内信发送时间;
管理员发站内信的时候,只在MessageText插入站内信的主体内容。Message里不插入记录。
那么,用户在登录以后,首先查询MessageText中的那些没有在Message中有记录的记录,表示是未读的站内信。在查阅站内信的内容时,再将相关的记录插入到Message中。
这个方法和第二种的比较起来。如果,活跃用户是100%。两者效率是一样的。而活跃用户的比例越低,越能体现第三种的优越来。只插入有效的记录,那些不活跃的,就不再占用空间了。
以上,是我对群发“站内信”的实现的想法。
http://daihaixiang.blog.163.com/blog/static/3830134201111155381735/
相关推荐
站内信的数据库设计 一、站内信的概念和特点 站内信是指在网站或平台内部实现的消息传送系统,类似于邮箱,主要由...站内信数据库设计是一个非常重要的课题,对于实现站内信的功能和提高系统的稳定性有着重要的意义。
“站内信”是为方便会员商务信件往来而设的服务功能,类似于邮箱,主要由收件箱、发件箱、草稿箱和垃圾箱四部分组成,但该功能仅对网站的注册会员开放。 “站内信”不同于电子邮件,电子邮件通过专门的邮件服务器...
对于大规模用户群发操作,可通过异步处理和消息队列来批量插入消息表`message`,实现站内信通知。 总的来说,电商项目的优惠券系统设计需要兼顾业务逻辑的复杂性和技术实现的稳定性。合理的数据模型、严谨的业务...
本系统功能完备、使用方便快捷,已在全国超过100所中小学校成功应用,并得到了多方一致好评。...4. 家长管理系统:班级主界面、考勤统计、成绩统计、作业查询、老师评语查询、课程表、站内信、个人信息。
Destoon B2B网站管理系统是一套完善的B2B(电子...板、在线充值、资金提现、产品交易、站内信、询盘、报价、关键字排名、商机收藏、邮件订阅、邮件群发、客服中心、会员整合、广告管理、友情链接、单网页、 RSS订阅...
生成HTML、URLRewrite、标签缓存、SQL缓存、页面缓存、远程附件、计划任务、数据库备份恢复、VIP会员、企业主页、二级域名、主页模板、在线充值、资金提现、产品交易、站内信、询盘、报价、关键字排名、商机收藏、...
升级之前站长需要注意查看信息发送模版(原站内信模版)是否有id=11的站内信模版(有就做好备份 没有就不需理会) 二.后台信息发送模版(原站内信模版),全部模版都重新设置下(不开启短信也需要重新设置哦,选择...
- 读取站内信(未读和已读) - 一对多发送站内信 ## 文件模块 - 文件上传 - 文件下载 ## 邮件模块 - 单独发送邮件 - 群发邮件 - Thymeleaf邮件模板 ## 安全模块 - 注解形式的权限校验 - 拦截器 ## 文章管理...
另外还有群发站内信件功能,可以快速向所有个人用户或单位用户发布信息! 管理登录页为:[admin/login.asp] 用户名为:[小张],密码为:[1234],如要使用,请尽快在表[admin]中修改! jobs_bak.mdb为全新的数据库...
7. 系统用户:对各个基本的用户增删改查,单发、群发站内信邮件短信,导入导出excel表格,批量删除 8. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料 9. 代码生成:生成完整的模块代码...
7. 系统用户:对各个基本的用户增删改查,单发、群发站内信邮件短信,导入导出excel表格,批量删除 8. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料 9. 代码生成:生成完整的模块代码,...
另外还有群发站内信件功能,可以快速向所有个人用户或单位用户发布信息! 管理登录页为:[admin/login.asp] 用户名为:[小张],密码为:[1234],如要使用,请尽快在表[admin]中修改! jobs_bak.mdb为全新的数据库文件...
生成HTML、URLRewrite、标签缓存、SQL缓存、页面缓存、远程附件、计划任务、数据库备份恢复、VIP会员、企业主页、二级域名、主页模 板、在线充值、资金提现、产品交易、站内信、询盘、报价、关键字排名、商机收藏、...
修复删除短信群发会员是误删会员站内信的bug 修复商城查看成果全部广告的网址 后台数据库维护增加多余碎片显示功能,方便优化 后台淘宝订单显示淘宝mini_id 优化php和javascript的求整函数 优化javascript模板提取...
简洁的短信系统,支持群发短信、私信、即时短信等多种模式短信方式; 提供在线聊天功能,可在网站开设小型缓存application类聊天室,反应速度超快,管理性卓越; 全站生成静态HTML网站的功能,同时支持多种生成...
另外还有群发站内信件功能,可以快速向所有个人用户或单位用户发布信息! 管理登录页为:[admin/login.asp] 用户名为:[小张],密码为:[1234],如要使用,请尽快在表[admin]中修改! jobs_bak.mdb为全新的数据库文件,...
生成HTML、URLRewrite、标签缓存、SQL缓存、页面缓存、远程附件、计划任务、数据库备份恢复、VIP会员、企业主页、二级域名、主页模 板、在线充值、资金提现、产品交易、站内信、询盘、报价、关键字排名、商机收藏、...
[修正]文件清理失败 定单处理完善 添加站内信 友情连接点击数、来访数系统完善 留言回复增加删除功能 修复上传图片超出限制后需要刷新 文件清理找不到路径 添加会员短信提醒 增加文件下载系统 会员注册页...