最近工作中需要設計一整套系統,其包括 B/S形式的WEB服務、資料庫等,而且包括要設計應用程式層私人通訊協定的C/S的結構的程式模組,涉及到與外界資料庫互動、與外界模組互動。
由於我實在是設計上的小白,也對資料庫、WEB這塊事基本不太懂,在自己大體上對整套系統劃分模組之後,對於系統與資料庫互動,或者系統內部資料庫建設方式存在很多疑惑點。
於是我懷著好奇心,和我公司一DB專家聊了一小會。受益匪淺!現在總結一下心得。
應用程式層與資料庫的互動許可權控制的設計上一般分為兩種形式:
1. 庫端:即在資料庫中分配使用者權限,不同的應用使用不同的使用者名稱與資料庫進行互動。這樣的方式適合於能很明確的劃分且固定許可權的各個模組。
2. 應用程式層:資料庫給一個應用(主模組)分配一定許可權,然後該應用提供一套API,自己封裝對資料庫的一些操作。可以由其他應用調用。這種方式適合於經常需要變化許可權的副模組(副使用者)
系統設計初期盡量使用一個資料庫:(這裡指邏輯上)
除非非常確定兩個庫完全沒有交集,可以在設計上就將它分離,作為不同的資料庫。否則,可以在系統設計初期可以將整個系統的資料庫完全使用一個,整體配置許可權、建表。因為即使之後需要分離,也非常簡單。若初期設計上就邏輯分離,那麼在後期很可能需要交叉的時候帶來更大的麻煩。
關於資料庫叢集:
oracle和mysql都提供資料庫叢集。
叢集也大體分兩種:1.相當於負載平衡(效能) 2.相當於備份(安全)
在資料庫設計的時候,中小規模可以完全不考慮儲存空間。(若不夠,加硬碟就是了。)即使大規模資料庫需要考慮儲存空間問題,資料庫廠商有極多的成熟的解決方案,不需要自己考慮。。
資料庫叢集和一個分布式系統基本類似,採用統一對外的閘道伺服器,機器之間走網線心跳通訊等,走光纖(需要的話)傳資料。——這裡都是資料庫廠商研究的事情了,也是有很多成熟方案。
MYSQL未必比ORACLE差,即使現在看來,用MYSQL也未必是不專業的表現。
最後,
相當感謝我們的DB專家孔哥,為我耐心的掃盲~