前言
銜接上篇文章,這篇是相關的表結構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集成提供了堅實的數據基礎。