音视频会议服务搭建(设计方案-数据库sql)-02

在这里插入图片描述

前言

衔接上篇文章,这篇是相关的表结构sql语句记录

EchoMeet 会议系统数据库表结构设计

📋 设计概述

本文档定义了EchoMeet音视频会议系统的完整数据库表结构,采用微服务架构设计,支持高并发、可扩展的会议场景。

🎯 设计原则

  • 高并发支持:优化索引设计,支持大量并发用户
  • 数据一致性:合理的外键关系和约束设计
  • 扩展性:预留扩展字段,便于后期功能迭代
  • 性能优化:合理的分表策略和缓存设计
  • 数据安全:敏感数据加密,软删除机制
  • 职责分离:用户基础信息与会议配置分离,便于维护

📊 核心业务表设计

1. 用户表 (users)

用户基础信息表,只存储用户的核心身份信息。

CREATE TABLE `users` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`name` varchar(255) NOT NULL COMMENT '真实姓名',`nick_name` varchar(255) NOT NULL COMMENT '昵称',`gender` varchar(255) DEFAULT 'unknown' COMMENT '性别:male=男,female=女,unknown=未知',`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',`email` varchar(255) NOT NULL COMMENT '邮箱地址',`phone` varchar(20) NOT NULL COMMENT '手机号码',`password` varchar(255) NOT NULL COMMENT '密码(加密存储)',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用,2=已删除',`online_status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '在线状态:0=离线,1=在线,2=忙碌,3=离开',`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',`last_ip` varchar(255) DEFAULT NULL COMMENT '最后登录IP地址',`device` varchar(255) DEFAULT NULL COMMENT '登录设备信息',`platform` varchar(255) DEFAULT NULL COMMENT '登录平台:web=网页,android=安卓,ios=苹果,desktop=桌面',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_email` (`email`),UNIQUE KEY `uk_phone` (`phone`),UNIQUE KEY `uk_nick_name` (`nick_name`),KEY `idx_status` (`status`),KEY `idx_online_status` (`online_status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户基础信息表';

2. 用户会议配置表 (user_meeting_configs)

用户会议相关的配置和统计信息,与用户表分离,便于扩展和维护。

CREATE TABLE `user_meeting_configs` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`user_id` bigint unsigned NOT NULL COMMENT '用户ID',`meeting_nickname` varchar(100) DEFAULT NULL COMMENT '会议中显示的昵称',`default_audio_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '默认音频开启:0=关闭,1=开启',`default_video_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '默认视频开启:0=关闭,1=开启',`meeting_permissions` json DEFAULT NULL COMMENT '会议权限设置(JSON格式)',`total_meeting_time` bigint unsigned NOT NULL DEFAULT '0' COMMENT '累计会议时长(秒)',`total_meetings_hosted` int unsigned NOT NULL DEFAULT '0' COMMENT '主持会议总数',`total_meetings_joined` int unsigned NOT NULL DEFAULT '0' COMMENT '参与会议总数',`preferred_camera` varchar(255) DEFAULT NULL COMMENT '首选摄像头设备ID',`preferred_microphone` varchar(255) DEFAULT NULL COMMENT '首选麦克风设备ID',`preferred_speaker` varchar(255) DEFAULT NULL COMMENT '首选扬声器设备ID',`video_quality` tinyint unsigned NOT NULL DEFAULT '2' COMMENT '视频质量:1=低,2=中,3=高',`auto_join_audio` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '自动加入音频:0=否,1=是',`auto_join_video` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '自动加入视频:0=否,1=是',`enable_noise_suppression` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '启用噪音抑制:0=否,1=是',`enable_echo_cancellation` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '启用回声消除:0=否,1=是',`last_meeting_at` datetime DEFAULT NULL COMMENT '最后参与会议时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_user_id` (`user_id`),KEY `idx_meeting_stats` (`total_meetings_hosted`, `total_meetings_joined`),KEY `idx_last_meeting_at` (`last_meeting_at`),CONSTRAINT `fk_user_meeting_configs_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会议配置表';

3. 会议室表 (meeting_rooms)

会议室是会议的载体,支持固定会议室和临时会议室。

CREATE TABLE `meeting_rooms` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`room_number` varchar(32) NOT NULL COMMENT '会议室号码(唯一标识)',`room_name` varchar(255) NOT NULL COMMENT '会议室名称',`room_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议室类型:1=临时房间,2=固定房间,3=个人房间',`owner_id` bigint unsigned NOT NULL COMMENT '房主用户ID',`owner_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '房主类型:1=普通用户,2=管理员',`max_participants` int unsigned NOT NULL DEFAULT '50' COMMENT '最大参与人数',`password` varchar(255) DEFAULT NULL COMMENT '会议室密码(加密存储)',`is_public` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '是否公开:0=私有,1=公开',`description` text COMMENT '会议室描述',`settings` json COMMENT '会议室设置(JSON格式)',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用,2=维护中',`expires_at` datetime DEFAULT NULL COMMENT '过期时间(临时房间)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_room_number` (`room_number`),KEY `idx_owner` (`owner_id`, `owner_type`),KEY `idx_status_type` (`status`, `room_type`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议室表';

4. 会议表 (meetings)

记录具体的会议会话信息,一个会议室可以有多次会议。

CREATE TABLE `meetings` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '会议ID',`meeting_id` varchar(64) NOT NULL COMMENT '会议唯一标识符',`room_id` bigint unsigned NOT NULL COMMENT '会议室ID',`title` varchar(255) NOT NULL COMMENT '会议标题',`description` text COMMENT '会议描述',`host_id` bigint unsigned NOT NULL COMMENT '主持人用户ID',`host_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '主持人类型:1=普通用户,2=管理员',`scheduled_start_time` datetime DEFAULT NULL COMMENT '预定开始时间',`scheduled_end_time` datetime DEFAULT NULL COMMENT '预定结束时间',`actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间',`actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间',`meeting_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议类型:1=即时会议,2=预约会议,3=周期会议',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '会议状态:0=未开始,1=进行中,2=已结束,3=已取消',`max_participants` int unsigned NOT NULL DEFAULT '50' COMMENT '最大参与人数',`current_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '当前参与人数',`password` varchar(255) DEFAULT NULL COMMENT '会议密码(加密存储)',`settings` json COMMENT '会议设置(录制、共享等)',`metadata` json COMMENT '会议元数据(WebRTC相关配置)',`recording_enabled` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否启用录制:0=否,1=是',`recording_path` varchar(500) DEFAULT NULL COMMENT '录制文件路径',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_id` (`meeting_id`),KEY `idx_room_id` (`room_id`),KEY `idx_host` (`host_id`, `host_type`),KEY `idx_status_type` (`status`, `meeting_type`),KEY `idx_scheduled_time` (`scheduled_start_time`, `scheduled_end_time`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`),CONSTRAINT `fk_meetings_room` FOREIGN KEY (`room_id`) REFERENCES `meeting_rooms` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议表';

5. 会议参与者表 (meeting_participants)

记录会议的参与者信息和状态。

CREATE TABLE `meeting_participants` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '参与记录ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`user_id` bigint unsigned NOT NULL COMMENT '用户ID',`user_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '用户类型:1=普通用户,2=管理员',`role` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议角色:1=参与者,2=主持人,3=协作主持人',`join_time` datetime DEFAULT NULL COMMENT '加入时间',`leave_time` datetime DEFAULT NULL COMMENT '离开时间',`duration` int unsigned DEFAULT '0' COMMENT '参与时长(秒)',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '参与状态:0=邀请中,1=已加入,2=已离开,3=被踢出',`connection_status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '连接状态:0=离线,1=在线,2=连接中,3=重连中',`audio_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '音频状态:0=关闭,1=开启',`video_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '视频状态:0=关闭,1=开启',`screen_sharing` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '屏幕共享:0=关闭,1=开启',`client_info` json COMMENT '客户端信息(设备、浏览器等)',`network_stats` json COMMENT '网络统计信息',`permissions` json COMMENT '权限设置(发言、共享等)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_user` (`meeting_id`, `user_id`, `user_type`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_user` (`user_id`, `user_type`),KEY `idx_status` (`status`, `connection_status`),KEY `idx_join_time` (`join_time`),CONSTRAINT `fk_participants_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议参与者表';

6. 会议邀请表 (meeting_invitations)

管理会议邀请信息。

CREATE TABLE `meeting_invitations` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '邀请ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`inviter_id` bigint unsigned NOT NULL COMMENT '邀请人ID',`inviter_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '邀请人类型:1=普通用户,2=管理员',`invitee_id` bigint unsigned DEFAULT NULL COMMENT '被邀请人ID(注册用户)',`invitee_email` varchar(255) DEFAULT NULL COMMENT '被邀请人邮箱(未注册用户)',`invitee_phone` varchar(20) DEFAULT NULL COMMENT '被邀请人手机号',`invitation_code` varchar(64) NOT NULL COMMENT '邀请码',`message` text COMMENT '邀请消息',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '邀请状态:0=待回复,1=已接受,2=已拒绝,3=已过期',`response_time` datetime DEFAULT NULL COMMENT '回复时间',`expires_at` datetime NOT NULL COMMENT '过期时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_invitation_code` (`invitation_code`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_inviter` (`inviter_id`, `inviter_type`),KEY `idx_invitee` (`invitee_id`),KEY `idx_email` (`invitee_email`),KEY `idx_status` (`status`),KEY `idx_expires_at` (`expires_at`),CONSTRAINT `fk_invitations_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议邀请表';

7. 会议消息表 (meeting_messages)

存储会议期间的聊天消息。

CREATE TABLE `meeting_messages` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '消息ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`sender_id` bigint unsigned NOT NULL COMMENT '发送者ID',`sender_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '发送者类型:1=普通用户,2=管理员,3=系统',`message_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '消息类型:1=文本,2=图片,3=文件,4=系统通知',`content` text NOT NULL COMMENT '消息内容',`file_url` varchar(500) DEFAULT NULL COMMENT '文件URL(文件消息)',`file_size` bigint unsigned DEFAULT NULL COMMENT '文件大小(字节)',`file_type` varchar(50) DEFAULT NULL COMMENT '文件类型',`reply_to_id` bigint unsigned DEFAULT NULL COMMENT '回复的消息ID',`is_private` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否私聊:0=公开,1=私聊',`recipient_id` bigint unsigned DEFAULT NULL COMMENT '私聊接收者ID',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '消息状态:0=已删除,1=正常,2=已撤回',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_sender` (`sender_id`, `sender_type`),KEY `idx_message_type` (`message_type`),KEY `idx_created_at` (`created_at`),KEY `idx_reply_to` (`reply_to_id`),CONSTRAINT `fk_messages_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议消息表';

8. 会议录制表 (meeting_recordings)

管理会议录制文件信息。

CREATE TABLE `meeting_recordings` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '录制ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`recording_id` varchar(64) NOT NULL COMMENT '录制唯一标识',`title` varchar(255) NOT NULL COMMENT '录制标题',`file_path` varchar(500) NOT NULL COMMENT '录制文件路径',`file_size` bigint unsigned NOT NULL DEFAULT '0' COMMENT '文件大小(字节)',`duration` int unsigned NOT NULL DEFAULT '0' COMMENT '录制时长(秒)',`format` varchar(20) NOT NULL DEFAULT 'mp4' COMMENT '文件格式',`resolution` varchar(20) DEFAULT NULL COMMENT '视频分辨率',`start_time` datetime NOT NULL COMMENT '录制开始时间',`end_time` datetime DEFAULT NULL COMMENT '录制结束时间',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '录制状态:0=录制中,1=已完成,2=处理中,3=失败',`download_count` int unsigned NOT NULL DEFAULT '0' COMMENT '下载次数',`is_public` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否公开:0=私有,1=公开',`password` varchar(255) DEFAULT NULL COMMENT '访问密码(加密存储)',`expires_at` datetime DEFAULT NULL COMMENT '过期时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_recording_id` (`recording_id`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_status` (`status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`),CONSTRAINT `fk_recordings_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议录制表';

🔧 扩展功能表设计

9. 会议模板表 (meeting_templates)

预设的会议模板,方便快速创建会议。

CREATE TABLE `meeting_templates` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '模板ID',`template_name` varchar(255) NOT NULL COMMENT '模板名称',`creator_id` bigint unsigned NOT NULL COMMENT '创建者ID',`creator_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '创建者类型:1=普通用户,2=管理员',`is_public` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否公开:0=私有,1=公开',`template_config` json NOT NULL COMMENT '模板配置(会议设置、权限等)',`usage_count` int unsigned NOT NULL DEFAULT '0' COMMENT '使用次数',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),KEY `idx_creator` (`creator_id`, `creator_type`),KEY `idx_public_status` (`is_public`, `status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议模板表';

10. 会议统计表 (meeting_statistics)

会议相关统计数据,用于分析和报表。

CREATE TABLE `meeting_statistics` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '统计ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`date` date NOT NULL COMMENT '统计日期',`total_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '总参与人数',`max_concurrent_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '最大并发人数',`total_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '会议总时长(秒)',`average_duration_per_user` int unsigned NOT NULL DEFAULT '0' COMMENT '用户平均参与时长(秒)',`audio_quality_score` decimal(3,2) DEFAULT NULL COMMENT '音频质量评分',`video_quality_score` decimal(3,2) DEFAULT NULL COMMENT '视频质量评分',`network_quality_score` decimal(3,2) DEFAULT NULL COMMENT '网络质量评分',`total_messages` int unsigned NOT NULL DEFAULT '0' COMMENT '消息总数',`screen_sharing_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '屏幕共享总时长(秒)',`recording_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '录制时长(秒)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_date` (`meeting_id`, `date`),KEY `idx_date` (`date`),KEY `idx_created_at` (`created_at`),CONSTRAINT `fk_statistics_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议统计表';

📈 性能优化建议

1. 分表策略

  • 会议消息表:按月分表,提高查询性能
  • 会议统计表:按年分表,便于历史数据管理

2. 索引优化

  • 复合索引覆盖常用查询场景
  • 定期分析慢查询,优化索引策略

3. 缓存策略

  • Redis缓存
    • 活跃会议信息(30分钟过期)
    • 用户会议权限(10分钟过期)
    • 会议室状态(实时更新)

4. 数据清理

  • 定期清理过期的临时会议室
  • 归档历史会议数据
  • 清理无效的邀请记录

🔒 安全考虑

1. 数据加密

  • 会议密码使用bcrypt加密
  • 敏感配置信息加密存储

2. 权限控制

  • 基于角色的访问控制(RBAC)
  • 会议级别的权限管理

3. 数据备份

  • 定期数据库备份
  • 重要会议录制文件备份

📝 总结

本数据库设计涵盖了EchoMeet会议系统的核心功能需求:

  • ✅ 会议室管理(临时/固定/个人房间)
  • ✅ 会议生命周期管理
  • ✅ 参与者状态跟踪
  • ✅ 邀请机制
  • ✅ 实时消息
  • ✅ 录制功能
  • ✅ 统计分析
  • ✅ 模板系统

设计充分考虑了高并发、可扩展性和数据安全性,为后续的mediasoup集成提供了坚实的数据基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87371.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCPA2APPT 智能化演示文稿系统:A2A、MCP、ADK 三大架构全流程自动化

🚀 项目名称 MCPA2APPT / MultiAgentPPT —— 一站式 A2A MCP ADK 多智能体并发 PPT 生成解决方案 MCPA2APPT 是一款开源 AI PPT 创作神器,基于 A2A(Ask-to-Answer)、MCP(Multi-agent Control Protocol)和…

pyinstall打包mysql-connector-python后运行报错的问题!

简单的测试代码 # main.py import mysql.connectorDB_HOSTlocalhost DB_PORT3306 DB_NAMElover DB_USERroot DB_PASSWORDxxxx# 连接数据库 connection mysql.connector.connect(hostDB_HOST,portDB_PORT,databaseDB_NAME,userDB_USER,passwordDB_PASSWORD)if connection.is_c…

应对高并发:淘宝商品评论实时数据 API 高效接入开发实践

在电商平台的运营中,商品评论数据是用户决策、商家优化及平台运营的重要依据。淘宝作为国内领先的电商平台,其商品评论数据具有实时性强、数据量大、并发访问频繁等特点。本文将围绕淘宝商品评论实时数据 API 的高效接入展开,探讨在高并发场景…

踩坑日记:虚拟机桥接模式无法连接网卡

对于一名网安学生,我们渗透测试一般是需要虚拟机使用桥接模式。 但是vm直接设置成桥接模式并不能上网。还要进行如下配置 改一下这个桥接的地方。改成我们主机的网卡。 如何查看主机网卡呢? 设置搜索网络

Android 系统默认的Launcher3,Android 系统的导航栏(通常是屏幕底部)显示的 4 个快捷应用图标,如何替换这4个应用图标为客户想要的。

Android 系统默认的Launcher3, Android 系统的导航栏(通常是屏幕底部)显示的 4 个快捷应用图标, 如何替换这4个应用图标为客户想要的。 开发云 - 一站式云服务平台 按如下方式可以修改应用图标。 diff --git a/packages/apps/Launcher3/res/xml/default_workspace_5x6_no_a…

maker-pdf 文档文字识别,并用python实现

下面我将详细讲解maker-pdf文档文字识别的技术原理、特点,并提供完整的Python实现代码及优化方案。内容结合最新文档和OCR技术实践,适合开发者直接集成到项目中。 一、maker-pdf 核心技术解析 maker-pdf是基于深度学习的端到端OCR工具链,专…

Go基础(Gin)

go mod init my-gin-app 初始化一个 Go 项目,创建一个go.mod文件go mod tidy 自动整理项目依赖,确保go.mod和go.sum文件与代码实际使用的依赖一致go mod init:创建项目的 “依赖说明书”。go mod tidy:整理 “说…

21、鸿蒙学习——使用App Linking实现应用间跳转

简介 使用App Linking进行跳转时,系统会根据接口传入的uri信息(HTTPS链接)将用户引导至目标应用中的特定内容,无论应用是否已安装,用户都可以访问到链接对应的内容,跳转体验相比Deep Linking方式更加顺畅。…

Cursor无限邮箱续费方法

1.注册无限邮箱2925 2.“其他邮箱” 3.点击左下角添加邮箱 4.管理员身份运行Windos PowerShell 5.输入该指令并运行,修改机器码 irm https://aizaozao.com/accelerate.php/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/…

LeetCode Hot100(图论)

200. 岛屿数量 题意 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你…

Ubuntu Gnome 安装和卸载 WhiteSur-gtk-theme 类 Mac 主题的正确方法

WhiteSur-gtk-theme 是一个流行的 GNOME 桌面主题,可以让 Ubuntu 的桌面环境看起来像 macOS。以下是安装和卸载 WhiteSur-gtk-theme 的详细步骤,包括解释每个命令的作用。 一、安装 WhiteSur-gtk-theme 1. 准备工作 在安装主题之前,建议确…

如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板

DataGear 数据可视化分析平台(http://datagear.tech/) 在新发布的5.4.1版本中,内置表格图表新增了serverSidePaging选项,仅需通过简单的配置,即可为表格添加服务端分页、关键字查询、排序功能。 本文以SQL数据集作为数…

股指期货套保比例怎么算?

在金融市场里,套期保值(套保)是一种常见的风险管理手段,目的是通过期货市场对冲现货市场的风险。而套保比例(也叫套保比率)的计算,是套保操作的核心。简单来说,套保比例就是“期货头…

逻辑回归(Logistic Regression)算法详解

文章目录 一、逻辑回归:从线性回归到二分类的跨越1.1 逻辑回归简介1.2 Sigmoid函数:概率映射的数学本质1.3 参数 w w w 和 b b b 对Sigmoid的调控1.4 从线性回归到分类1.5 决策边界:从概率到类别(结合图3、图4) 二、…

HTTPS通信流程:SSL/TLS握手全解析

2021,2022,2023年1-8月看了很多技术书籍,现在想来忘了很多,用到的也不多,但是因为提前接触过,所以很多新东西,接受起来,比预想的要容易些。最近突然想要回忆下HTTPS,居然…

SVG 在 VSCode 中的使用与优势

SVG 在 VSCode 中的使用与优势 引言 SVG(可缩放矢量图形)是一种基于可扩展标记语言的图形图像格式,与传统的位图格式(如 JPEG 或 PNG)相比,SVG 图像具有更高的灵活性和可缩放性。随着前端开发领域的不断发展,SVG 在网页设计中的应用越来越广泛。本文将介绍 SVG 在 Vis…

Ubuntu开放mysql 3306端口

Ubuntu开放mysql 3306端口 1. 检查 UFW 防火墙规则2. 检查 iptables 规则 1. 检查 UFW 防火墙规则 sudo ufw status verbose | grep 3306若输出包含 3306/tcp ALLOW,表示端口已开放(如下) ubuntuUbuntu2404:~$ sudo ufw status verbose | grep 3306 3306/tcp …

CentOS 卸载docker

1、停止docker服务 systemctl stop docker.socket systemctl stop docker systemctl stop containerd 2、列出已安装的docker包 yum list installed | grep -i docker 输出如下: containerd.io.x86_64 1.6.33-3.1.el7 docker-ce-stab…

MySQL数据库----DML语句

目录 DML-介绍SQL-DML-添加数据SQL-DML-修改数据SQL-DML-删除数据 DML-介绍 DML英文全称是 Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。 添加数据(INSERT) 修改数据(UPDATE&#xff…

Prompt:提示词工程

前言在LLM大放异彩的今天,一个简单的问题,可能就会引出一个方案,一篇散文,而驱动这一切的,正是输入的“提示词(Prompt)”Prompt工程就是:与大模型打交道时,如何更好地设计…