標籤:資料庫設計 oracle 資料庫系統
接下來正式開篇講解在實際中大型項目中oracle的進階設計及開發的內容,以下講解的oracle內容以及樣本程式都是基於oracle11R2。
為了防止脫離實際地搞一堆理論,本人盡量用實際工作中的例子來說明問題,當然一些必要的理論有時候還是需要講解,因為說的內容是進階設計及開發,入門級的SQL以及資料庫概念將不會做詳細講解。
絕大多數IT項目,都是圍繞資料庫進行各種業務的,所以也有人將這類項目稱為資料庫專案,也就是說資料庫是重點,有過項目設計經驗的都知道,好的資料庫設計,可以讓開發和維護變得簡單,提升系統的擴充性。要想設計一個好的資料庫系統,對資料庫知識的掌握程度,加上個人的業務經驗,直接決定了設計的好壞。
Oracle資料庫是個龐大的體系,從大的方向可以分為oracle內部體繫結構和外部體繫結構。本人以後將陸陸續續通過實際例子引出oracle的各種知識結構。
言歸正傳,我們現在要開發一個百萬層級訪問量的商業問卷調查系統,參與調查的網民將參與抽獎活動,我們開始進行資料庫設計。
因為是oracle進階設計和開發的講解,具體的業務分析不深入,簡單說明:從使用者角度,系統會分兩部分,一個是網站前端,一個是管理後台;從業務上分類,則會包含會員管理模組、問卷內容管理模組、統計分析模組、積分模組、使用權限設定、系統設定等等。
接下來將截取會員管理模組部分,詳細講解資料庫進階設計,引出各種oracle的各種知識,特別是可以最佳化設計和開發的知識,其中一些業務細節將被忽略。不當之處請見諒,謝謝高手們批評指正。
首先要判斷系統的類型,毫無疑問,問卷調查系統是個OLTP系統。
其次評估資料量,評估下來會有2000萬使用者,活躍使用者會有200萬。2000萬使用者當然不算小,1個位元組位就是20M的資料,假如一條會員記錄資訊有0.5K的話,會員表的大小就是10G。
由上面兩個評估和判斷可以得出結論,普通的企業管理軟體的設計思路肯定不是好方法。
通常的會員系統中會員表會包括以下欄位:
會員ID、會員登入名稱、會員登入密碼、會員暱稱、會員email、會員中文名、證件類型、證件號碼、會員手機、會員性別、會員類別、會員QQ號碼、聯絡電話、聯絡地址、郵遞區號、會員所在地區、會員生日、興趣愛好、職業、崗位、
自我介紹、個人頭像、註冊時間,等等
在設計上效能考慮就很重要,可以起碼從以下五點考慮:
A)合理定義欄位的資料類型
B)將會員表分拆成多個表
C)建立分區表
D)建立適當的索引
E)普通表資料對應的資料表空間和索引表對應的資料資料表空間分離
針對上述五點論述,待續。。。
連載:告訴你如何設計一個日訪問量千萬層級的系統,談oracle的進階設計和開發(2)