數據庫與分布式架構策略思考
一直在了解互聯網的大數據高并發的架構,以及所采用的各種優化策略。
在建設初期,可以先從兩方面進行考慮:
一、數據庫設計策略。從數據庫的擴展性來說,是考慮數據可以方便的進行垂直劃分和水平劃分,即:
垂直切分(Vertical Partition/Sharding):就是把不同格式的數據,存儲到不同的數據庫,也叫分庫
水平切分(Horizontal Partition/Sharding):就是把相同的數據格式的數據,存儲到不同的數據庫,本文將側重這點進行講述,也叫分表
要理解和記憶這兩種切分方式,可以大腦回憶一下你的數據庫表,橫向是字段說明,豎向是記錄數據,因此,垂直切分意味是要劃垂直的線將表的字段分成幾塊,也即一張表分成N張不同字段的表;水平切分意味著水平劃線,將數據記錄分成幾塊,各塊的數據字段其實是一樣的,只是記錄數值不同。
1.考慮到后期數據量大的情況。在數據庫設計時就要考慮分庫,比如同樣是新聞信息,就考慮為時政新聞、娛樂新聞
、體育新聞等等建立各自的新聞表,從而達到方便存儲的目的
2.考慮到中后期訪問量大的情況。設計時考慮分表,比如對娛樂新聞,可以根據日期,人物等字段拆分成多種表來存儲,從而提高查詢的速率。
3、綜合上面2種情況,可以綜合使用。當數據量達千萬,并發量上萬的適合,考慮建立緩存表。就是在實際表和用戶之間在搭建一個臨時表,訪問數據時,首先訪問臨時表,如果不存在,則進入實際表中獲取,然后放入緩存表中,同時會通過后臺線程,定時將緩存表數據同步到實際數據庫中,同步時間可以針對系統要求來進行。
二、程序優化策略。搭建系統,需要認真考慮選擇合適框架,當然公司或者個人的時間能力精力都夠多的話,可以考慮自己開發系統框架。
1.框架建設
1).Structs2+Spring3+Hibernate3這3個框架搭建的系統每一年都在更新,不斷有變化和進步,這種搭配最適合構建企業信息系統,而要應用于互聯網大訪問量和高并發量的Web系統,還是比較吃力,需要進一步采取多種優化策略,如靜態化,緩存數據,JS壓縮等等。
2).Spring MVC根據網上對當前熱門的幾個框架的測試信息得出,Spring的controller還是比Structs的效率高一點,Spring的數據庫操作手段Jdbctemplate是對Java的JDBC的簡單封裝,操作SQL效率是肯定比Structs結合Hibernate效率高。
3).Spring+Hibernate該配合的架構訪問效率和開發效率都比較不錯,適合企業開發和互聯網開發。
4).Spring+JPA(Hibernate)該配合框架效率在目前開看,效率非常不錯,最合適互聯網應用,個人非常推薦。
2.靜態化。推薦使用的框架有freemaker和velocity。
轉自:http://blog.csdn.net/achan2090/article/details/7247540