擴(kuò)展數(shù)據(jù)庫(kù)的時(shí)候面臨諸多挑戰(zhàn)。
搜索
當(dāng)搜索量很少的時(shí)候,搜索是簡(jiǎn)單的事。
當(dāng)搜索量上來(lái),比如達(dá)百萬(wàn)級(jí)的時(shí)候,可以把搜索內(nèi)容按某種順序排列。比如在字典中,按字母順序排列。
并發(fā)
如果100萬(wàn)人需要同時(shí)用這本字典,這就是并發(fā)。
如何解決這個(gè)問題呢?
把這本字典復(fù)制100萬(wàn)份,專業(yè)術(shù)語(yǔ)叫"主從復(fù)制"。
再把100萬(wàn)份復(fù)制字典放到每個(gè)人的手頭,專業(yè)術(shù)語(yǔ)叫"分布式策略"。
一致性
如果想修改字典,這時(shí)候100萬(wàn)人都在使用著字典,怎么辦呢?
如果一本一本收回來(lái)修改,這就造成了一致性問題,有的修改了,有的還沒有被修改。
如果全部收回來(lái)修改,造成了可用性問題,即在字典被收回階段,人們無(wú)法使用字典。
還有一個(gè)方法,就是做一個(gè)"修改日志"或"附錄",不修改原先的字典,把"修改日志"或"附錄"分發(fā)給每個(gè)人。
死鎖
在同一時(shí)間,有成百上千的人要修改數(shù)據(jù)庫(kù)中的同一條數(shù)據(jù),大家對(duì)這條數(shù)據(jù)都競(jìng)爭(zhēng)。就像超市發(fā)禮品,越多的人爭(zhēng)相拿同一個(gè)禮品,這就造成競(jìng)爭(zhēng),造成大家互相擁擠堵塞都拿不到禮品。而在數(shù)據(jù)庫(kù)中,這叫"死鎖"。
總結(jié):在現(xiàn)實(shí)場(chǎng)景中,數(shù)據(jù)庫(kù)分布在不同的地方,會(huì)出現(xiàn)很多人在同時(shí)修改同一條數(shù)據(jù)。這時(shí)候需要數(shù)據(jù)庫(kù)設(shè)計(jì),需要處理高并發(fā)避免死鎖保持一致性,需要環(huán)環(huán)相扣的算法,這夠很多數(shù)據(jù)庫(kù)牛人忙活一陣子了。最終給用戶的感覺或假象是:數(shù)據(jù)庫(kù)只有一份拷貝,同一時(shí)間只有一個(gè)人在修改,用戶看到是最新的數(shù)據(jù),并且能立即響應(yīng)。
參考資料:極客學(xué)院公眾號(hào)
新聞熱點(diǎn)
疑難解答
圖片精選