昨天講到partition,事實上partition比較常用在write需求高的應用(平行寫),這是為什麼呢?
以前同事問過一個問題:既然有多台機器,那當然是把query分散到多台機器上啊。為什麼我們不想把query灑到所有機器上呢?
這問題的答案是:如果query很耗時,那分散的確會比較好;但如果query很快(比方有用到DB的index lookup),那分散會增加效能降低的風險。
Hadoop的Map Reduce就是透過分散提昇效率,因為有很多資料要掃,所以分散是值得的。在這種狀況下,效能的增加蓋過效能降低的風險。
所謂效能降低的風險是指:因為要所有機器都回傳資料後才能完成運算,所以運算時間是 Max(各台機器的處理時間)。當機器越多的時候,發生異常的機會越高,導致運算延遲。
一個現實的例子像是在橋開會時間,當與會人員越多時,就越有可能要花更久時間來協調,因為要等最慢回覆的那個人。
所以,在分散式資料系統中,如過查詢費時,可以盡量分散;但如果查詢很快,請盡量集中在少數機器處理。
不好意思,今天的文章有點水^^,請多包含~