我DeADcarreY

简介:

 前几日,发布了博客“群发“站内信”的实现”,得到广大网友呼应,在此表示感谢。

  看了网友的留言。发现大家对文中的前两种情况没有什么异议,对第三种方案争议颇多。我在此再把我的第三种情况详细的阐述一下,和大家交流。另外,本文的主体主要放在“群发”(也就是点到面),至于“单发”(点到点),不在本文的讨论之列。

  先看看,第三种情况。站内的用户是大量级的(上百万)。

  经过考虑,表设计修正如下

 

  表名:Message

  ID:编号;RecID:接受者编号;MessageID:站内信编号;Statue:站内信的查看状态;

  表名:MessageText 

  ID:编号;SendID:发送者编号;Message:站内信的内容;PDate:站内信发送时间;

 

  这样,管理员(假设ID=1)给所有的用户发一封站内信。就在MessageText表中插入一条记录。例如:

  ID:4;SendID=1;Message=Good;PDate:2010-4-9

 

  某个用户(假设ID=7),登陆系统后,发现在MessageText的表中,有ID=4的记录,并且在Message中没有RecID=7且MessageID=4的记录,说明这条记录这个用户没有读过,给个提示信息给用户,提示用户看站内信。注意,此时仍然没有在Message中插入记录。一旦该用户点击查看该站内信的时候,在Message中插入一条记录,如:

  ID:55;RecID=7;MessageID=4;Statue=已读

  如果该用户删除这条站内信,则实际上是修改上面这条记录:

  ID:55;RecID=7;MessageID=4;Statue=删除

  这样一来,这个用户下次登陆的时候,由于Message表中有相应的记录,也不会提示用户看站内信。

 

  有网友质疑,为何删除的时候,只是标记“删除”,这样,长此以往,不是浪费大量的空间吗?这个网友说的也有道理。不过,我们还是要分析具体的情况。

  当网站的用户达到百万级的时候,其中的“活跃用户”(参看上文的介绍)可能只占其中的一小部分。

  假设,网站用户200万,其中活跃用户40万。

  一封站内信,在MessageText中有一条记录,40万活跃用户都看了站内信(其实,这也不大可能,有不少的人是不看站内信的)。在Message中插入了40万条记录。以后,不管是阅读或者是删除,在Message中保留了这40万条记录。

 

  好,如果不采用这种办法,在群发的时候,往Message中插入200万记录,40万活跃用户都看了信,并且都勤快的删除了站内信(这是不大可能的),Message中还是保留了160万条记录。因为,这些不活跃的用户可能永远都不会登陆了。那40万条记录(最坏的情况,因为如果有人不看站内信,就不会生成记录)和160万条记录(最好的情况,因为不是每个用户都会删除站内信。)相比,那个更加节省空间呢?

 

  站内信的设计,要根据你的受众群的具体情况而定,如果你的受众群活跃度接近100%,并且每人都很勤快,我的设计当然有问题。可实际中这个理想状态几乎是不可能出现的。

  

  有网友提出,如果站内信的对象不是全体而是一部分呢?抱歉,这个也不在本文讨论之列,你可以对我的表进行扩展,以达到你的要求。

 

  感谢各位网友的交流。我在此想说的是,我们设计一个系统,必须得结合实际情况,根据实际情况来制定,比能达到一个比较理想的状况。


    本文转自万仓一黍博客园博客,原文链接:http://www.cnblogs.com/grenet/archive/2010/04/09/1708008.html,如需转载请自行联系原作者

相关文章
|
4天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
300 116
|
19天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
479 44
Meta SAM3开源:让图像分割,听懂你的话
|
14天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
691 222
|
2天前
|
Windows
dll错误修复 ,可指定下载dll,regsvr32等
dll错误修复 ,可指定下载dll,regsvr32等
135 95
|
12天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1695 158
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
943 62