# 《分布式IM系统》总体架构-第02节:分布式IM即时通讯系统数据模型设计

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/14ie4NqRD (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★★☆☆
  • 本节重点:对分布式IM即时通讯系统的数据模型进行设计,主要涉及到用户、好友关系、群组、群成员、单聊消息和群聊消息等的数据模型设计。
  • 课程视频:https://t.zsxq.com/14ie4NqRD (opens new window)

大家好,我是冰河~~

经过前面对分布式IM即时通讯系统的功能需求、业务流程和技术流程的梳理,我们已经明确了分布式IM即时通讯系统的业务需求和技术需求,明确了分布式IM即时通讯系统的方案目标,以及对分布式IM即时通讯系统进行了总体架构设计。

# 一、前言

至此,我们已经清楚了分布式IM即时通讯系统的功能需求、业务流程、技术流程、方案目标以及总体架构设计,对这些内容做到心中有数后,我们就可以开始尝试梳理和设计分布式IM即时通讯系统的数据模型了。将这些数据模型梳理清楚,能够更好的指导我们研发分布式IM即时通讯系统。

# 二、本章诉求

在整个分布式IM即时通讯系统的设计和研发过程中,尽量简化复杂的流程设计和无关紧要的业务设计,保留最核心的功能,让大家从分布式IM即时通讯系统中领略如何编写高并发程序,从总体上对系统的优化处理做到心中有数。

分布式IM即时通讯系统简化无关紧要的业务后,主要涉及到用户、好友关系、群组、群成员、单聊消息和群聊消息。这也是我们在设计和研发分布式IM即时通讯系统的过程中,要实现的最基础和最核心的功能。

本章,我们就一起对用户、好友关系、群组、群成员、单聊消息和群聊消息的数据模型进行简单的设计。

# 三、数据模型设计

数据模型对于系统的建设是至关重要的,可以这么说,数据模型是系统正常运行的基石。无论一个系统如何建设和运行,最终这个系统的价值基本都会以数据的形式呈现出来。如何对这些数据建立对应的数据模型,来更好的支撑系统的运行,并且能够为人们带来更好的体验,使系统的价值最大化,这是在设计和研发系统的过程中需要重点考虑的问题。

本节,就本着最简化的原则来设计用户、好友关系、群组、群成员、单聊消息和群聊消息的数据模型。

注意:数据库脚本已经存放到bh-im-resource仓库下的environment/mysql/init目录下,脚本文件为bh_im_init.sql,后续在搭建分布式IM即时通讯系统的研发环境时,会自动将数据脚本导入到MySQL数据库,无需自己重新运行脚本文件。

# 3.1 用户模型设计

对于用户模型数据来说,简化后的模型字段包括:用户id、用户名、密码、用户昵称、用户头像、用户头像缩略图、性别、用户类型、个性签名、最后登录时间、创建时间,整体如下所示。

字段名称 类型 长度 默认值 是否必填 说明
id bigint 20 用户id
user_name varchar 20 用户名
password varchar 64 密码
nick_name varchar 64 用户昵称
head_image varchar 255 用户头像
head_image_thumb varchar 255 用户头像缩略图
sex tinyint 1 0 性别 0:男 1:女
type smallint 6 1 用户类型 1:普通用户 2:审核账户
signature varchar 1024 个性签名
last_login_time datetime 默认 NULL 最后登录时间
created_time datetime 默认 NULL 创建时间

# 3.2 好友关系模型设计

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码