
使用固定的數據庫庫表從開發、二次開發來說,更加容易。對于用戶使用過程中生成的表,每次查找數據時都要先查表名,再找數據,比較麻煩。
舉例來說,早期的用友財務軟件用 Access 作數據庫,每年建立一個新的數據庫。很快,用戶和用友公司都發現,跨年度數據分析很難做。因此這是一個不好的設計。在 ERP 中,很少有不同的年度數據單獨分開。一般來說,所有年份的數據都在同一個表中。對于跨國公司甚至整個集團公司都用同一個 ERP 系統的時候,所有公司的數據都在一起。這樣的好處是數據分析比較容易做。
現在大多數數據庫系統都能做到在常數時間內返回一定量的數據。比如,Oracle 數據庫中,根據 primary key 在 100萬條數據中取 10 條數據,與在1 億條數據中取 10 條數據,時間相差并不多。
5. 避免一次取數據庫大量數據,取大量數據一定要用分頁。
這基本上是現在很多數據庫系統設計的基本守則。ERP 系統中超過 100萬條數據的表很多,對于很多表中的任何一個,一次取所有的會導致數據庫服務器長時間處于停滯狀態,并且影響其它在線用戶的系統響應速度。
一般來說,日常操作,在分頁顯示的情況下面,每次取得數據在 1-100 之間,系統響應速度足夠快,客戶端基本沒有特別長的停頓。這是比較理想的設計。這也是大型數據庫系統往往用 ODBC, ADO 等等通用的數據庫聯接組件而不用特定的速度較快的專用數據庫聯接組件的原因。因為系統瓶頸在于數據庫( Database) 方面(數據量大),而不在于客戶端(客戶端每次只取少量數據)。
在 B/S 數據庫系統中,分頁非常普遍。早期的數據庫系統經常有客戶端程序中一次性取大量數據做緩沖。現在已經不是特別需要了,主要原因有:
5.1 數據庫本身的緩沖技術大大提高。
大部分數據庫都會自動將常用的數據自動放在內存中緩沖,以提高性能。
5.2 數據庫聯接組件的緩沖技術也在提高。
包括 ADO 在內的一些數據庫聯接組件都會自動對數據結果集(result set)進行緩沖,并且效果不錯。比較新穎的數據庫聯接組件,比如 Hibernate 也加入了一些數據結果集緩沖功能。
當然,也有一些數據庫聯接組件沒有對數據結果集進行緩沖,比如 JDBC Driver,不過幾年之內情況應該有所改觀。也有些不太成功的數據緩沖,比如 EJB 中的實體Bean,性能就不盡如人意,實體Bean數據也是放在內存中,可能是因為占用內存過多的緣故。
相對來說,今天的程序員寫客戶端數據緩沖,能夠超過以上兩個緩沖效果的,已經比較難了。
CIO頻道人物視窗
CIO頻道方案案例庫
大數據建設方案案例庫
電子政務建設方案案例庫
互聯集成系統構建方案案例庫
商務智能建設方案案例庫
系統集成類軟件信息研發企業名錄