`
jiaker
  • 浏览: 21770 次
  • 性别: Icon_minigender_1
  • 来自: 甘肃
最近访客 更多访客>>
社区版块
存档分类
最新评论

群发站内信的实现

 
阅读更多

在很多网站系统(如CMS系统,SNS系统等),都有“站内信”的功能。

  “站内信”不同于电子邮件,电子邮件通过专门的邮件发送、保存。而“站内信”是系统内的消息,说白了,“站内信”的实现,就是通过数据库插入记录来实现的。

  “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息。点到点的消息传送很容易实现,本文不再详述。下面将根据不同的情况,来说说“站内信”的群发是如何实现的。

  第一种情况,站内的用户是少量级别的。(几十到上百)

  这种情况,由于用户的数量非常少,因此,没有必要过多的考虑数据库的优化,采用简单的表格,对系统的设计也来的简单,后期也比较容易维护,是典型的用空间换时间的做法。

  数据库的设计如下:表名: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%。两者效率是一样的。而活跃用户的比例越低,越能体现第三种的优越来。只插入有效的记录,那些不活跃的,就不再占用空间了。

  以上,是我对群发“站内信”的实现的想法。也欢迎各位提出自己的建议,大家互相借鉴,共同进步。

分享到:
评论
1 楼 JavaStudyEye 2012-01-04  
  讲的很有意思啊

相关推荐

    站内信-类似于邮箱

    而“站内信”是系统内的消息,其实就是通过数据库插入记录来实现的。 “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信,管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定...

    站内信的数据库设计

    站内信不同于电子邮件,电子邮件通过专门的邮件服务器发送、保存,而站内信是系统内的消息,其实就是通过数据库插入记录来实现的。 二、站内信的基本功能 站内信有两个基本功能: 1. 点到点的消息传送:用户给...

    分享网站群发站内信数据库表设计

    下面将根据不同的情况,来说说“站内信”的群发是如何实现的。  第一种情况,站内的用户是少量级别的。(几十到上百)  这种情况,由于用户的数量非常少,因此,没有必要过多的考虑数据库的优化,采用简单的表格,...

    (源码)基于Spring Boot和WebSocket的站内信系统.zip

    # 基于Spring Boot和WebSocket的站内信系统 ## 项目简介 本项目是一个基于Spring Boot和WebSocket的站内信系统,旨在为Spring Boot项目集成站内信功能。通过整合WebSocket,系统支持向指定用户发送信息和群发信息,...

    modown 8.12最新版

    管理员群发站内信(站内通知) 无限自助广告位购买(用户可用积分购买广告位,自助投放广告),需使用ErphpAD插件(限时活动免费赠送) 白天/夜间模式切换(后台可设置自动切换、默认夜间模式、禁止切换)、繁简体...

    基于Dubbo实现的SOA分布式(没有实现分布式事务)-SpringBoot整合各种组件的JavaWeb脚手架+源代码+文档

    - 读取站内信(未读和已读) - 一对多发送站内信 ## 文件模块 - 文件上传 - 文件下载 ## 邮件模块 - 单独发送邮件 - 群发邮件 - Thymeleaf邮件模板 ## 安全模块 - 注解形式的权限校验 - 拦截器 ## 文章管理...

    php数组对百万数据进行排除重复数据的实现代码

    在平时的工作中,经常接到要对网站的会员进行站内信、手机短信、email进行群发信息的通知,用户列表一般由别的同事提供,当中难免会有重复,为了避免重复发送,所以我在进行发送信息前要对他们提供的用户列表进行排...

    牛仔论坛营销大师 v1.7.zip

    2,支持群发帖、群顶帖、群抢沙发、群发站内信、群加好友、群留言、群收听、群打招呼等功能,不单是发帖,而是全方位的更精准的论坛营销; 3,兼容二十类防注册插件;自动识别二十种验证问题,包括四则运算、邮编、...

    电商项目:优惠券系统设计

    对于大规模用户群发操作,可通过异步处理和消息队列来批量插入消息表`message`,实现站内信通知。 总的来说,电商项目的优惠券系统设计需要兼顾业务逻辑的复杂性和技术实现的稳定性。合理的数据模型、严谨的业务...

    在线考试系统建设方案1 (2).pdf

    - 支持群发短信、站内信和邮件,方便与用户沟通。 13. 移动应用: - 设计兼容Android和iOS系统的移动应用,实现积分充值、课程消费和学习等功能。 该方案强调了平台的个性化需求,尤其是信息发布的定制化和前端...

    在线考试系统建设方案1.pdf

    - 通信功能:支持短信、站内信和邮件的群发。 - 移动端支持:未来计划支持Android和iOS设备的移动应用,提供积分充值、课程消费等功能。 方案设计采用的是产品基础(云博在线培训平台)加上定制化前端页面的方式...

    EUCMS智能建站系统(含手机站) v5.10.20

    26.支持会员注册、登陆、找回密码、互加关注,点对点发站内信,修改会员头像等 27.支持管理员分级权限功能,可指定某个管理员只能管理哪些内容,也可以指定模型管理员 28.支持网站logo,手机logo,微信图片的上传 29...

    群策客户关系管理系统标准版+直销系统宣贯.pdf

    1. 系统设置:快速来电记录、6个月跟进统计图表、6个月活跃用户图表、6个月流失客户图表、公告、站内信、工作日志、话题、任务安排、合同提醒等。 2. 分销商管理:分销商等级管理、分销商列表、分销商域名列表、分销...

    利用php数组对百万数据进行排重

    在日常工作中,经常需要处理大量数据,尤其是在需要对网站的会员进行站内信、手机短信、email等群发信息时,往往需要确保每个用户只接收一次消息。这就涉及到如何高效地去除用户列表中的重复项。本文将详细介绍如何...

    (完整版)商城功能详表.pdf

    - 会员二次营销:通过站内信、邮件群发进行精准营销。 - 赠品管理:设置赠品活动,提升用户购买体验。 6. 网站管理: - 站点配置:调整网站全局设置,如主题、语言等。 - 独立页面管理:创建自定义页面,如关于...

    EUCMS智能建站系统(含手机站)-Asp

    26.支持会员注册、登陆、找回密码、互加关注,点对点发站内信,修改会员头像等 27.支持管理员分级权限功能,可指定某个管理员只能管理哪些内容,也可以指定模型管理员 28.支持网站logo,手机logo,微信图片的上传 29...

    安装包 for hishop5.2.rar

    [新增] 增加站内消息功能,管理员可给会员群发站内消息,会员也可给管理员发站内消息 [修改] 后台即时营业信息和销售统计,取消1小时更新一次的做法,所有数据都要即时统计,这样才能确保统计数据的正确性。 ...

Global site tag (gtag.js) - Google Analytics