每個開發者都應該瞭解的數據庫知識

大多數計算機系統都是有狀態的,並且可能會依賴存儲系統。隨着時間的推移,我對數據庫的瞭解程度不斷加深,這是以我們的設計錯誤導致數據丟失和中斷爲代價。在數據量很大的系統中,數據庫是系統設計目標的核心。儘管開發人員不可能對數據庫一無所知,但他們所預見和所經歷的問題往往只是冰山一角。在本文中,我將分享一些見解,這些見解對於不擅長數據庫領域的開發人員來說非常有用。

如果在 99.999% 的時間裏網絡不出問題,那你很幸運

現如今,一方面人們認爲網絡很可靠,一方面由於網絡中斷而導致系統宕機的情況卻又很普遍。這方面的研究工作並不多,而且通常由大公司主導,而這些公司使用了配備定製硬件的專用網絡和專門的工作人員。

谷歌服務的可用性爲 99.999%,他們聲稱只有 7.6% 的 Spanner(谷歌的分佈式數據庫) 問題是因爲網絡導致的,儘管他們一直認爲專用網絡是其可用性背後的核心支撐。2014 年,Bailis 和 Kingsbury 的一份調查報告對 Peter Deutsch 在 1994 年提出的分佈式計算謬論之一提出了挑戰——網絡真的可靠嗎?

我們無法進行全面的調查,供應商們也不會提供足夠的數據來說明有多少客戶的問題是因爲網絡導致的。我們經常會遭遇大型雲供應商網絡發生宕機,導致部分網絡癱瘓數小時,這些事件有大量可見的受影響客戶,還有很多是我們看不到的。網絡中斷可能會影響到更多方面,儘管並非所有事件都產生了很大的影響。雲計算客戶也不一定能看到這些問題所在。當問題出現時,他們不太可能認爲與供應商的網絡錯誤有關。對他們來說,第三方服務就是黑盒。如果你不是供應商,要估計出真實的影響程度是不太可能的。

原文鏈接:【https://www.infoq.cn/article/2LmOMHkbC3pIlBqGiTEu】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章