日期:2014-05-16 浏览次数:22029 次
思路:每条消息对应着各个离线的群员。比如一个群有100人,80人不在线,那么每个群员发出一条消息,就需要插入80条离线消息。 离线消息表(消息ID,用户ID,消息内容,群ID) 优点:用户上线后,只需取出该用户的离线消息后删除该消息就可以了。 缺点:数据冗余极大。插入数据时也比较费时。
思路:拆分结构一中的表,将用户剥离出来,消息和用户为一对多的关系。 离线消息表(消息ID,消息内容,群ID) 消息用户表(消息ID,用户ID) 优点:相对结构一而言,数据冗余少了。 缺点: 1、判断某条消息何时已经发送完给所有应该发送的群员,以便删除该消息时不方便,每次离线群员上线都要做判断。 2、虽然冗余相对少了,但是数据量还是太大了。
思路:在群成员表中将群员排序,并给出排序号。然后在离线消息表中加个标志位字段,每个位对应着一个群员的已读状态(假设为未读为0,已读为1),类似10010100101这种形式的值。 离线消息表(消息ID,消息内容,群ID) 优点: 1、没有数据冗余。 2、写入速度快。 缺点: 1、判断某条消息何时已经发送完给所有应该发送的群员,以删除该消息时不方便,每次离线群员上线都要做判断。 2、群员变动,比如有新成员或成员退群时不好处理。