一辰妙、水平分表策略問(wèn)題
隨機(jī)分表策略和連續(xù)分表策略
隨機(jī)分表策略可以分散冷熱數(shù)據(jù)均衡存儲(chǔ)鹰祸,避免熱數(shù)據(jù)瓶頸。一般需要數(shù)據(jù)遷移密浑。
連續(xù)分表策略按照日期等分割蛙婴。
二、垂直分表策略
將訪問(wèn)頻度高的字段和訪問(wèn)頻度低的字段分開(kāi)存儲(chǔ)到兩個(gè)表尔破。
三街图、分庫(kù)問(wèn)題
可以使用mycat。
四懒构、數(shù)據(jù)遷移問(wèn)題
可以利用程序從原數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)再按照新的存儲(chǔ)策略存儲(chǔ)到相應(yīng)的數(shù)據(jù)庫(kù)表餐济。
五、表關(guān)聯(lián)問(wèn)題
跨庫(kù)關(guān)聯(lián)胆剧,可以使用程序中分階段查詢絮姆,再整合查詢結(jié)果。
六秩霍、分頁(yè)排序問(wèn)題
在分表中排序返回篙悯,在程序中再整合排序,將結(jié)果返回铃绒。
七鸽照、數(shù)據(jù)庫(kù)集群數(shù)據(jù)一致性問(wèn)題
集群數(shù)據(jù)很難做到強(qiáng)一致性,要保證弱一致性和最終一致性颠悬。cap定理:分布式系統(tǒng)不能同時(shí)滿足cap,c是一致性矮燎,a是可用性,p是分區(qū)容忍椿疗。分布式數(shù)據(jù)庫(kù)一般滿足cp漏峰,犧牲掉一部分可用性。
集群數(shù)據(jù)一致性算法包括:
paxos算法:一階段:proposer會(huì)選擇一個(gè)提案編號(hào)N届榄,向accepter發(fā)送編號(hào)為N的prepare請(qǐng)求浅乔。如果一個(gè)accepter收到一個(gè)N的prepare請(qǐng)求,而且N大于任何它收到的請(qǐng)求,將把自己最大的編號(hào)回應(yīng)給proposer靖苇。
二階段:當(dāng)proposer收到過(guò)半數(shù)量accepter回應(yīng)席噩,就將 <N,V>提交給accepter。
zab 算法:Leader服務(wù)器會(huì)將一個(gè)follower的事務(wù)請(qǐng)求轉(zhuǎn)化為一個(gè)proposal,并分發(fā)給所有follower服務(wù)器贤壁,一旦超過(guò)半數(shù)的follower服務(wù)器反饋悼枢,Leader會(huì)再次向所有follower服務(wù)器發(fā)送commit消息,將新提議提交脾拆。
八馒索、分布式全局唯一ID
uuid,snowflake算法名船,mongoDB的ObjectId