分散式資料系統的兩個問題根源:partition 和 replication。
先談partition。當資料放不進一台機器,或是對資料的運算太過耗時,單台機器無法負荷時,就是考慮partition的時候。
partition就是把資料切割放到多台機器上,首先要考量的,就是要怎麼切資料。
資料有幾種常見的切法:
除了切法之外,還要決定用哪個欄位當做切割的key。
資料切割是非常應用導向的問題,因為有一好沒兩好,某個切法可能能讓某種運算很有效率,但會害到其他種運算。
有一個tradeoff在讀寫之間,優化寫可能會害到讀。比方說Round-Robin可以平均寫入負載,但Range Query就要到所有機器上查詢。而如果用流水號的Range來切,有利於流水號的Range Query,但寫入會擠在同一台機器上。
另一個tradeoff在application之間,比方說一個用戶表格資料如果用地區來切割,那就有利於常帶地區條件的應用,因為這些應用可以只鎖定幾個partition進行查詢,而不用把query灑到所有機器上。
為什麼我們不要把query灑到所有機器上,這就下次再講好了。