音視頻會議服務搭建(設計方案-數據庫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
英文地址,請注明出處:http://en.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工程就是:與大模型打交道時,如何更好地設計…