一、QQ數據庫是怎樣設計的
1、對于群成員上限的問題,不是從數據庫層面解決的,而應該有專門的“配額檢查”服務/邏輯,在群成員人數變化時用來判斷當前群成員人數是否已超上限。而相應的配額都是全局統一配置的,可變更;
2、對于快速找到聊天記錄的問題,說到底就是:緩存、分區與索引。
數據庫設計就是將數據庫中的實體以及這些數據實體之間關系進行規劃和結構化。
數據庫中創建的數據結構的種類,以及在數據實體之間建立的復雜關系是決定數據庫系統效率的重要因素。
設計數據庫步驟:開發一個項目需要經過需求分析,概要設計,(詳細設計),代碼編寫,運行測試和上線維護幾個階段,下面重點討論在各個階段中數據庫的設計過程。
需求分析階段:分析客戶的業務和數據處理需求
概要設計階段:繪制數據庫的ER模型圖,用于在項目團隊內部、設計人員和客戶之間進行溝通,確認需求信息的正確性和完整性。
詳細設計階段:將ER圖轉換為多張表,進行邏輯設計,確認各表的主外鍵并應用數據庫設計的三大范式進行審核,經項目組開會討論確定后,還需根據項目的技術實現團隊開發能力以及項目的經費來源,選擇具體的數據庫(如MySQL成 Oracle等)進行物理實現。包括創建庫和創建表,存儲過程等,創建完畢后,開始進入代碼編寫階段,開發前后端應用程序。
E-R圖:實體:所調實體就是指現實世界中具有區分其他事物的特征或屬性并與其他實體有聯系的實體
屬性:屬性可以理解為實體的特征
聯系:兩個或多個實體之間的關聯關系
映射基數:表示通過聯系與該實體關聯的其他實體的個數,對于實體集X和Y之間的二元關系,映射基數必須為下列基數之一:
ER圖以圖形的方式將數據庫的整個邏輯結構表示出來:
矩形表示實體集;橢圓形表示屬性;菱形表示聯系集;直線用來連接屬性和實體集,也用來連接實體集和聯系集
延伸閱讀:
二、實例(instance)是什么
一組Oracle 后臺進程/線程以及一個共享內存區,這些內存由同一個計算機上運行的線程/進程所共享。這里可以維護易失的、非持久性內容(有些可以刷新輸出到磁盤)。就算沒有磁盤存儲,數據庫實例也能存在。也許實例不能算是世界上最有用的事物,不過你完全可以把它想成是最有用的事物,這有助于對實例和數據庫劃清界線。