即时聊天系统中群组和好友关系Mysql数据表设计

IM即时通讯开发如何设计能支撑百万并发的数据库 相信看到这个标题,很多人的第一反应就是:对数据库进行分库分表啊!但是实际上,数据库层面的分库分表到底是用来干什么的,其不同的作用如何应对不同的场景,我觉得很多同学可能都没搞清楚。 小型系统的典型数据库单机架构和明显的瓶颈 假如我们现在是一个小创业公司,注册用户就 20 万,每天活跃用户就 1 万,每天单表数据量就 1000,然后高峰期每秒钟并发请求最多就 10。 天呐!就这种系统,随便找一个有几年工作经验的高级工程师,然后带几个年轻工程师,随便干干都可以做出来。 因为这样的系统,实际上主要就是在前期 阅读详情

用户数据表

CREATE TABLE `wx_contacts` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `wxid` varchar(64)  NOT NULL DEFAULT '' COMMENT 'weixinid微信',
  `data_type` varchar(16)  NOT NULL DEFAULT '' COMMENT '接口状态码',
  `addFrom` varchar(64)  NOT NULL DEFAULT '' COMMENT '添加渠道',
  `alias` varchar(255)  NOT NULL DEFAULT '' COMMENT 'alias',
  `conRemark` varchar(1024)  NOT NULL DEFAULT '' COMMENT '备注',
  `entryptUsername` varchar(1024)  NOT NULL DEFAULT '' COMMENT '加密的用户名',
  `gender` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '性别男1-女2',
  `headPic` varchar(255)  NOT NULL DEFAULT '' COMMENT '头像',
  `isForceUpdate` varchar(32)  NOT NULL DEFAULT '' COMMENT '是否强制更新',
  `labelIds` varchar(32)  NOT NULL DEFAULT '' COMMENT '标签id',
  `labelNames` varchar(255)  NOT NULL DEFAULT '' COMMENT '标签名字',
  `nickName` varchar(255)  NOT NULL DEFAULT '' COMMENT '微信昵称',
  `opType` varchar(32)  NOT NULL DEFAULT '',
  `phone` varchar(16)  NOT NULL DEFAULT '' COMMENT '好友绑定手机',
  `pyInitial` varchar(128)  NOT NULL DEFAULT '' COMMENT '首字母',
  `quanPin` varchar(255)  NOT NULL DEFAULT '' COMMENT '全拼',
  `region` varchar(255)  NOT NULL DEFAULT '' COMMENT '地区',
  `selfWxId` varchar(255)  NOT NULL DEFAULT '' COMMENT '所有者微信id',
  `userName` varchar(255)  NOT NULL DEFAULT '' COMMENT '用户名id',
  PRIMARY KEY (`id`),
  KEY `userName` (`userName`),
  KEY `selfWxId` (`selfWxId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6508 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通讯录好友关系表';

用户关系表

CREATE TABLE `wx_contacts_relation` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `wx_id` int unsigned NOT NULL DEFAULT '0' comment '用户-id',
  `friend_id` int unsigned  NOT NULL DEFAULT '0' COMMENT '好友-id',
  `is_out` tinyint(1) unsigned  NOT NULL DEFAULT '0' COMMENT '0单向,1=双向',
  `user_group` varchar(16) COLLATE utf8mb4_unicode_ci not null DEFAULT '' comment '好友分组',
  `user_group` varchar(16) COLLATE utf8mb4_unicode_ci not null DEFAULT '' comment '对方好友分组',
  `created_at` timestamp NULL DEFAULT NULL comment '加好友时间',
  `updated_at` timestamp NULL DEFAULT NULL comment '删除好友时间',
  PRIMARY KEY (`id`),
  KEY `friend_id` (`friend_id`),
  KEY `wx_id` (`wx_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='wx好友关系表';

群数据表设计:

CREATE TABLE `wx_chatroom` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `wxid` varchar(64)  NOT NULL DEFAULT '' COMMENT '操作者微信id',
  `data_type` varchar(16)  NOT NULL DEFAULT '' COMMENT '接口状态码',
  `chatroomHeadPic` varchar(512)  NOT NULL DEFAULT '' COMMENT '群头像',
  `chatroomId` varchar(255)  NOT NULL DEFAULT '' COMMENT '群id',
  `chatroomOwner` varchar(255)  NOT NULL DEFAULT '' COMMENT '群所有者',
  `conRemark` varchar(255)  NOT NULL DEFAULT '' COMMENT '群的备注',
  `members` longtext  COMMENT '群成员json',
  `nickName` varchar(255)  NOT NULL DEFAULT '' COMMENT '群名称',
  `opType` varchar(32)  NOT NULL DEFAULT '' COMMENT '操作类型',
  `pyInitial` varchar(255)  NOT NULL DEFAULT '' COMMENT '群首字母',
  `quanPin` varchar(255)  NOT NULL DEFAULT '' COMMENT '群全拼',
  PRIMARY KEY (`id`),
  KEY `chatroomOwner` (`chatroomOwner`) USING BTREE,
  KEY `chatroomId` (`chatroomId`)
) ENGINE=InnoDB AUTO_INCREMENT=516 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='wx群信息表';

群关系数据库设计:


CREATE TABLE `wx_chatroom_relation` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` bigint(20) unsigned NOT NULL DEFAULT '0' comment 'wx群id',
  `wx_id` int unsigned  NOT NULL DEFAULT '0' COMMENT '成员id',
  `is_out` tinyint(1) unsigned  NOT NULL DEFAULT '0' COMMENT '0未退,1=退群',
  `created_at` timestamp NULL DEFAULT NULL comment '加群时间',
  `updated_at` timestamp NULL DEFAULT NULL comment '退群时间',
  PRIMARY KEY (`id`),
  KEY `group_id` (`group_id`) USING BTREE,
  KEY `wx_id` (`wx_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='wx群成员关系表';

查询sql:

-- 查询id: 4的好友列表,及其分组
SELECT friend_id AS friends, user_group AS my_group
FROM users_g
WHERE user_id = '4'
UNION ALL
SELECT user_id AS friends, friend_group AS my_group
FROM users_g
WHERE friend_id = '4';

 

IM即时通讯功能mysql数据库设计 设计一个具备即时消息(IM)功能的数据库需要考虑许多因素,包括用户、消息、聊天室、消息状态等。以下是一个简单的MySQL数据库设计示例,用于支持基本的IM功能: 用户表 (User) 用户ID (UserID) 用户名 (Username) 密码 (Password) 电子邮件 (Email) 其他用户相关信息 聊天室表 (ChatRoom) 聊天室ID (RoomID) 聊天室名称 (R... 阅读详情

相关推荐

集群聊天服务器:数据库表的设计

修改属性的字符编码altertableusermodifycolumnnamevarchar(50)charactersetutf8;修改表的字符编码altertableuserdefaultcharactersetutf8;

Sauron7i的博客 805

移动端常见即时通讯数据库设计

移动端即时通讯数据库表设计

github_37472200的博客 1896

局域网即时通讯项目:LanQQ 聊天系统的数据库和通信协议设计

数据库设计涵盖了用户表、好友关系表和聊天记录表等主要表格,以存储用户信息和聊天数据。通信协议设计包括用户登录、注册、发送消息和更新在线状态等功能的实现。LanQQ 是一个局域网内部的即时通讯项目,它提供了实时聊天和消息传递的功能。本文将详细介绍 LanQQ 的数据库设计和通信协议设计,包括数据库模型和通信协议的要点。此外,还将提供相应的源代码示例。上述源代码示例提供了简单的函数用于处理登录、注册、发送消息和更新在线状态的请求。LanQQ 的通信协议设计是为了实现用户之间的消息传递和在线状态更新。

TlScratch的博客 553

聊天室——MYSQL建表

在进行聊天室项目以前,我从来没有接触过mysql,但是mysql在聊天室的开发过程中起到了非常重要的作用;我们许多功能的实现都需要依靠数据库,毕竟我们的server不可能一直运行,有时一个功能实现的关键就在于数据表。 关于聊天室的建表我也是根据整体服务器的架构来进行 首先我们需要把每一个用户的基础信息记录下来, 用户数据表——UserData 在聊天之前,我们需要先有好友列表, 好友列表——FriendsList 关于好友列表,我们可以给每一个用户创建一个数据表,这个表的名字为这个用户的用户名"u

qq_51665789的博客 5118

基于诺哈仿腾讯WAP源码的即时通讯系统架构解析与实战优化

即时通讯(IM)系统是现代互联网应用的核心组件之一,其基础原理在于实现用户间消息的实时传递。从技术实现角度看,早期IM系统常采用HTTP轮询机制来模拟实时通信,其中短轮询通过客户端定时向服务器发起请求来拉取新消息,而长轮询则通过挂起请求直到有新数据时再响应,这两种方式都是理解客户端-服务器实时交互的基础模型。在工程实践中,基于PHP和MySQL构建的轮询式IM系统,如诺哈仿腾讯WAP源码,为开发者提供了学习消息推送、会话管理和状态同步等核心概念的绝佳范例。这类系统虽然在高并发场景下存在实时性不足和服务器压力

weixin_30907685的博客 290

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7945

基于Java的实时聊天系统设计与实现

Service层:存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,它有接口还有接口的实现方法,在接口的实现方法中需要导入Dao层,Dao层是直接跟数据库打交道的,它也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法。因此,在线系统需要具备前台功能和后台功能,其中,前台功能实现以下功能,用户注册、用户登录、添加好友、加入群聊、创建群聊、查看聊天记录、发送消息、删除好友、退出群聊、解散群聊和个人设置。图4-3 系统后台功能模块结构图。

毕业作品网站 3906

CAD图纸智能搜索三大突破:图纸秒搜技术、相似度匹配与AI语义搜索

CAD图纸作为核心资产,长期面临管理难题:传统全文检索需逐张打开图纸人工查找,效率低下;相似图纸匹配依赖人工比对,误差率高;非专业人员难以通过模糊描述精准定位图纸。针对这些问题,唯杰地图推出三项智能解决方案:一是基于现代化索引引擎的​​全文搜索​​,支持秒级检索图纸内的文字、图层、块名称等,并可多条件组合查询;二是​​相似度搜索​​,通过SIFT算法和深度学习提取几何特征与拓扑结构,实现高精度匹配;三是​​AI语义搜索​​,利用大模型解析自然语言指令(如“查找半径为10的红色圆”),直接定位目标图形。

vjmap的博客 1866

《Redis与MySQL在即时通讯聊天室中的应用与设计》

本文介绍了聊天室系统中数据库的必要性及MySQL与Redis的应用。主要内容包括:1. 数据库的作用(避免数据丢失,支持持久化存储);2. MySQL基础操作及在聊天室中的应用(用户信息、好友关系等结构化数据存储);3. Redis基础及使用场景(在线状态、验证码等高频访问数据);4. C++程序与数据库的通信实现;5. 总结MySQL和Redis的协同分工。通过两种数据库的配合,实现聊天室系统的稳定性和实时性需求。

2501_93510914的博客 203

从平衡车到寻迹小车:IMU963RA九轴陀螺仪实战避坑与四元数融合指南

本文详细解析了IMU963RA九轴陀螺仪在机器人姿态控制中的应用,重点探讨了从六轴升级到九轴系统的技术路径及四元数融合算法。通过实战案例,揭示了如何利用地磁计补偿陀螺积分漂移,并提供硬件集成、传感器校准及算法实现的完整解决方案,有效将8小时漂移控制在2度以内。

weixin_27219587的博客 253

OSG 核心详解

OpenSceneGraph (OSG) 的核心架构、场景图管理以及几何体的绘制

qq_45859163的博客 728

MallChat:5分钟构建电商即时通讯系统的终极指南

在电商竞争白热化的今天,单纯的商品展示已经无法满足用户需求。你是否遇到过这样的困境:顾客咨询商品时回复不及时,用户之间无法分享购物心得,客服系统效率低下?MallChat正是为解决这些**电商社交化痛点**而生的企业级开源项目,它将即时通讯与电商功能深度融合,让开发者能够快速搭建具备社交属性的电商平台。 ## 为什么电商需要即时通讯系统? 传统电商平台存在三大核心问题: 1. **沟通效率低

gitblog_00440的博客 191

Centos 7 Linux 离线安装使用 MySQL 5.7:下载、安装、配置、使用

本文详细介绍了在 CentOS 7 系统下离线安装 MySQL 5.7 的完整流程,包括环境准备、安装包下载、用户与目录配置、数据库初始化、服务启动与自启设置、root 密码修改、远程访问开启及防火墙配置等关键步骤,并提供了本地与远程客户端(如 Navicat、DBeaver)的连接使用方法,适合无网络环境下的数据库部署参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 6111

5分钟搭建企业级电商聊天系统:MallChat让购物更有温度 [特殊字符][特殊字符]

想要打造一个既能购物又能聊天的电商平台吗?MallChat(抹茶群聊)就是你一直在寻找的终极解决方案!这个开源项目完美融合了即时通讯与电商功能,让用户可以在购物的同时享受社交聊天的乐趣。无论你是想学习企业级Java开发,还是需要快速构建一个具备社交属性的电商平台,MallChat都能为你提供完整的参考实现。 ## 为什么选择MallChat?🤔 在传统电商平台中,买家与卖家之间往往缺乏有效的

gitblog_00346的博客 57

GPU硬件架构与微架构深度解析34-GPU安全架构深度解析

现代GPU不仅是图形处理器,更是高性能计算平台,安全架构设计至关重要。内存加密- 保护数据在传输和存储时的安全安全启动- 确保固件和软件的完整性隔离机制- 防止不同应用间的数据泄露密钥管理- 安全存储和处理加密密钥。

2301_79143213的博客 98

基于网关实现不同网段S7-1200 CPU的通信方法

在A网段的计算机上ping B网段的计算机:在A网段的计算机上使用ping命令,向B网段的计算机发送数据包。在B网段的计算机上ping A网段的计算机:同样地,在B网段的计算机上使用ping命令,向A网段的计算机发送数据包。数据包也会经过路由器进行转发,最终到达A网段的计算机。配置路由器:在路由器上配置两个网段的IP地址和子网掩码,并设置路由表,使得路由器可以将A网段和B网段之间的数据进行转发。确定两个网络之间的路由器:假设需要将A网段和B网段进行通信,需要在A、B两个网段之间设置一台路由器。

电工 2396

全端IM源码深度拆解:架构、消息可靠性、部署与二次开发实战

即时通讯(IM)系统的核心挑战在于长连接稳定性、消息不丢不乱以及服务端存储模型设计。从用户登录到消息上屏,需要走通鉴权、握手、心跳、ack确认与seq排序等完整链路;离线场景则依赖消息同步游标与增量拉取补偿。这些原理直接决定了聊天软件在大并发和弱网环境下的表现。对开发者而言,选择一套架构清晰、端到端覆盖的全端IM源码,可以极大降低从零搭建的技术门槛。以一套支持安卓、iOS、Web、小程序和桌面端的IM源码为例,可以从全端架构、客户端链路、服务端存储到部署实测逐层拆解,为自建聊天系统或二次开发提供可直接落地的

weixin_33585822的博客 169

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1084

(十二)群组业务

*AllGroup表 ****GroupUser表 **

weixin_46272577的博客 842

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

社交网络关系 mysql架构_社交网络海量用户关系(关系链)设计思考

1.背景1.1.关系链业务社交系统(微信、QQ,支付宝)需要解决的一个工程问题是如何完成海量用户关系存储,并高效查询。典型代表系统是微信好友、QQ好友、蚂蚁森林游戏中的好友关系、微博粉丝、知乎粉丝偶像列表等等。这类业务其实就是关系链业务,而关系链分弱好友关系和强好友关系。弱好友关系不需要彼此的同意,比如用户A关注用户B这类关注和粉丝的关系。而强好友关系需要经过彼此同意,比如用户A请求添加B为好友,...

weixin_29942159的博客 1352

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

qq群的表设计探究

2018年3月21日 课题组管理就如qq的群是一样的,课题组有课题组组长;qq群有群主;课题组有组员;qq群有群人员 对于一个课题组来说,组长可以对课题组进行修改,组员只能看得见,但是不能修改。所以对于表间关系应该是什么样的呢? 下面是我创建的课题组信息表的结构 课题组这块共有两大功能 1.对课题组的管理 2.对课题组成员的管理 下面给出课题组管理功能展现 如图所示,任何一个...

weixin_30823227的博客 670

Vc - Qt - 仿照微信项目 - 服务器 - 数据表结构设计与管理V3.0(关于增加群聊功能相关表结构设计:用户和群之间联系、群消息、群信息等)

Qt - 仿照微信项目 - 服务器 - 数据表结构设计与管理V3.0

莫忘输赢的博客 1073

IM 开源项目 群组服务 数据库设计 (01)

废话不说,直接上表 列名 说明 类型 长度 是否主键 可否为空 描述 p_group_id 群组ID Bigint 20 Yes No   p_group_creater_id 创建者ID Bigint

jptaozhantaozhan的专栏 5896

基于GO的即时聊天后端项目(七)关系模块之群聊模块设计与实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

weixin_65270961的博客 684

聊天室数据表设计

聊天室 数据表设计

qq_34886696的博客 4905

IM表结构设计

数据库表结构设计方案,仅供参考 User(--用户表                字段    字段类型    字段描述    备注 U_ID    Int        主键、自增 U_LoginID    Varchar(20)    (登陆账号)     U_NickName    Varchar(20)    (昵称)     U_PassWord    Varcha

mituan1234567的专栏 1万+
上一篇: MySQL8.0 及 SQL 注入
下一篇: 一个PHP算法,php数组一个二维数组拆分成多个子数组
程序员元婴
博客等级 码龄12年 13粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值