聊聊底線?|?壞數(shù)據(jù)與假數(shù)據(jù)
時(shí)間:2021-09-17 15:35:48
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]堅(jiān)持思考,就會(huì)很酷存儲(chǔ)介質(zhì)的進(jìn)化很久以前,祖先把甲骨文寫在骨頭之上,骨頭保存持久,但是制作困難,后來(lái)把文字寫在竹簡(jiǎn)、紙上。文字是信息,紙張、竹簡(jiǎn)、石頭是介質(zhì),雖然它們比骨頭不易保存,但是制作簡(jiǎn)單,更容易擴(kuò)散。存儲(chǔ)介質(zhì)在進(jìn)化,信息形式也在變化!世界萬(wàn)物的信息在數(shù)字化,數(shù)字化的信息可...
堅(jiān)持思考,就會(huì)很酷

存儲(chǔ)介質(zhì)的進(jìn)化
很久以前,祖先把甲骨文寫在骨頭之上,骨頭保存持久,但是制作困難,后來(lái)把文字寫在竹簡(jiǎn)、紙上。


世界太危險(xiǎn)
存儲(chǔ)的介質(zhì)在變化,體積越來(lái)越小,容量越來(lái)越大。唯一不變的是:無(wú)論多好的介質(zhì)總是會(huì)腐朽,只要他存在于現(xiàn)實(shí),東西變壞不以個(gè)人意志為轉(zhuǎn)移。
最關(guān)鍵的是:這是個(gè)危機(jī)四伏的世界!奇伢見(jiàn)過(guò)
背鍋俠:哎呀,我運(yùn)維操作不當(dāng),vim 進(jìn)去,改了一個(gè)字節(jié)。沒(méi)事吧?老板:沒(méi)事,你去財(cái)務(wù)結(jié)一下工資。還見(jiàn)過(guò)
硬盤:哎呀,上年紀(jì)了,我比特反轉(zhuǎn)了,好像瓦特了。夢(mèng)見(jiàn)過(guò)(新聞見(jiàn)過(guò)):
天災(zāi),被雷劈了,被水淹。更可怕的是:總有刁民想害朕。
黑客:我是黑客,為彰顯技術(shù)實(shí)力,我要搞壞他。對(duì)于存在盤上的數(shù)據(jù)來(lái)說(shuō),這么危險(xiǎn),怎么辦?
這么危險(xiǎn),可怎么辦?
它被有意修改,任何介質(zhì)都可能壞。既然改變不了,那么只能忍受它。
存進(jìn)去是 1 ,取出來(lái)是 2。這,你還要嗎?當(dāng)然不能要!那我還有底線嗎?有!我可以忍受你變壞,但是不能忍受你的假。就跟愛(ài)情一樣,不愛(ài)了,直說(shuō)。著急趕著去找下一個(gè)備胎,不要假冒,拜拜就拜拜,下一個(gè)更乖。數(shù)據(jù)壞了就說(shuō)壞了,別耽誤事!
怎么證明自己是自己
怎么才能證明數(shù)據(jù)好壞呢,要有第三方證人才行。怎么證明你是你?
誰(shuí)來(lái)證明?別人。我們數(shù)據(jù)也是類似,數(shù)據(jù)存儲(chǔ)的時(shí)候,要多存一些見(jiàn)證的東西,能夠證明你好壞的東西。這個(gè)證明叫做校驗(yàn)碼。然而沒(méi)有免費(fèi)的午餐,這些額外的東西是有代價(jià)的。需要更多的存儲(chǔ)空間,需要多余的計(jì)算時(shí)間。
怎么解決?
自校驗(yàn)!
奇伢突然來(lái)了靈感,創(chuàng)造了一個(gè)“伢式算法”,每 8 字節(jié)數(shù)據(jù)對(duì)應(yīng)生成 1 個(gè)字節(jié)的校驗(yàn)。

p = x % 8 (嘿嘿,其實(shí)就是除余算法):- 用戶數(shù)據(jù) 1, 1 % 8 = 1,校驗(yàn)碼則是 1 。
- 用戶數(shù)據(jù) 2, 2 % 8 = 2,校驗(yàn)碼則是 2 。


1??%?8?=?1
9??%?8?=?1
17?%?8?=?1
這種叫做沖突,并且沖突率肉眼可見(jiàn)的大呀,每 8 個(gè)數(shù)字就有循環(huán)重復(fù)。如果數(shù)據(jù)是 1 變成 9 呢?那你還知道數(shù)據(jù)是壞的嗎?

更好的算法
怎么選一個(gè)好的算法來(lái)計(jì)算校驗(yàn)碼?一般決策者會(huì)從多個(gè)維度考慮:
- 計(jì)算速率
- 資源消耗
- 結(jié)果沖突率
- 校驗(yàn)結(jié)果的冗余度
冗余是唯一的出路
數(shù)據(jù)可以壞,但不可以假,這是和單機(jī)存儲(chǔ)引擎的約定。但是數(shù)據(jù)可靠性怎么保證?這個(gè)問(wèn)題依然要解決。
冗余分身是唯一奧秘。數(shù)據(jù)可靠性是一個(gè)系統(tǒng)工程,單點(diǎn)引擎無(wú)法徹底解決,單點(diǎn)存儲(chǔ)引擎能保證只給真數(shù)據(jù)不給假數(shù)據(jù),然后通過(guò)分布式的冗余,來(lái)保證整個(gè)系統(tǒng)數(shù)據(jù)對(duì)外的高可靠。

總結(jié)
最后奇伢總結(jié)幾個(gè)基本要點(diǎn):
- 對(duì)于單機(jī)引擎來(lái)講,數(shù)據(jù)可以壞,但不可給假的數(shù)據(jù)出去,這是底線;
- 系統(tǒng)的可靠性是系統(tǒng)多組件配合打造的,核心方法是數(shù)據(jù)冗余;
- 校驗(yàn)數(shù)據(jù)也要考慮成本和效率;





