Categories
程式開發

每个开发者都应该了解的数据库知识


大多数计算机系统都是有状态的,并且可能会依赖存储系统。随着时间的推移,我对数据库的了解程度不断加深,这是以我们的设计错误导致数据丢失和中断为代价。在数据量很大的系统中,数据库是系统设计目标的核心。尽管开发人员不可能对数据库一无所知,但他们所预见和所经历的问题往往只是冰山一角。在本文中,我将分享一些见解,这些见解对于不擅长数据库领域的开发人员来说非常有用。

如果在 99.999% 的时间里网络不出问题,那你很幸运

现如今,一方面人们认为网络很可靠,一方面由于网络中断而导致系统宕机的情况却又很普遍。这方面的研究工作并不多,而且通常由大公司主导,而这些公司使用了配备定制硬件的专用网络和专门的工作人员。

谷歌服务的可用性为 99.999%,他们声称只有 7.6% 的 Spanner(谷歌的分布式数据库) 问题是因为网络导致的,尽管他们一直认为专用网络是其可用性背后的核心支撑。2014 年,Bailis 和 Kingsbury 的一份调查报告对 Peter Deutsch 在 1994 年提出的分布式计算谬论之一提出了挑战——网络真的可靠吗?

我们无法进行全面的调查,供应商们也不会提供足够的数据来说明有多少客户的问题是因为网络导致的。我们经常会遭遇大型云供应商网络发生宕机,导致部分网络瘫痪数小时,这些事件有大量可见的受影响客户,还有很多是我们看不到的。网络中断可能会影响到更多方面,尽管并非所有事件都产生了很大的影响。云计算客户也不一定能看到这些问题所在。当问题出现时,他们不太可能认为与供应商的网络错误有关。对他们来说,第三方服务就是黑盒。如果你不是供应商,要估计出真实的影响程度是不太可能的。

原文链接:【https://www.infoq.cn/article/2LmOMHkbC3pIlBqGiTEu】。未经作者许可,禁止转载。