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