這是一個小小的經驗談,當然不見得正確不過可以討論。

很多的系統會區分即時資料及歷史資料,因為兩者的用途及方向不同。記載歷史資料的部分想當然一定很多人會去分析使用。所以整體機器的負載會比較高,那即時系統的部分則因為有一定使用者所以負載比較好規劃及控制。

這時候我們就要感謝微軟的Excel了,幫助一堆只會下SQL的人一個很好的分析工具。讓他們可以透過ODBC去找他們想要的資料,可是EXCEL 的這個工具說實在對於DB是一個負荷,因為每連上一次就必須重新下達SQL去撈一次,說真的已經歷史資訊的東西,難道撈第二次會不一樣嗎?

所以負載不斷上升......連寫程式的成也用相同概念在寫程式,無論使用.NET,Web Service都一樣系統的負載是不會降低的,只是把問題丟在不同的地方罷了。


有人可能會說DB只要穩定速度快基本上都沒有問題,重撈一次不是很嚴重。

當一個Table擁有二千萬筆資料(不要說不可能,我就遇到了)你還要join其他的table,你說能多快......

所以History程式必須要有cache的概念,他與real time的系統不同,real time隨時都會有變化,所以每次都必須重新確認source的資訊是否變更。可是History如果source有變更那就很悽慘,整個系統設計是有問題的。

History 的資訊是不容有變動的,所以我才會說如果是寫History系統的人必須統一在一個共用的空間中做cache的作法,這樣可以降低硬體設備的無效運用,增加整個歷史資訊報表的速度,當然如果History真的要改變的時候可以將Cache的資訊刪除重新在抓取一次,可是基本上應該是不需要除非系統有出現異常問題,不然歷史是不會改變的。

會提供程式本身要做Cache的原因是,很多公司都已經將資訊Web化,無論是real time或者是History的資訊,可是集中web化就必須擔心系統的穩定度及速度的問題,Cache可以改善使用者對於速度上的要求非常多,如果設計的好甚至連硬體都費用都可以降低非常多,不需要不斷的升級硬體去解決錯誤的設計。

piratechu 發表在 痞客邦 PIXNET 留言(0) 人氣()