這個(gè)世界為什么不升級(jí)數(shù)據(jù)庫?你知道嗎?
如果您的開源數(shù)據(jù)庫現(xiàn)在運(yùn)行良好,為什么還要?jiǎng)铀??因?yàn)樯芷诮Y(jié)束的軟件更難維護(hù),而且您可能會(huì)錯(cuò)過有價(jià)值的新功能。
譯自Why Isn’t the World Upgrading Its Databases?,作者 Richard Gall。
數(shù)據(jù)庫是應(yīng)用程序和軟件的基礎(chǔ)。它們也有些隱形;正如軟件的通用語言所說,它們是后端,這意味著它們位于其他所有內(nèi)容的后面或下面。
這意味著在升級(jí)時(shí),很容易陷入兩個(gè)陷阱之一:要么忘記它們的存在,要么強(qiáng)烈擔(dān)心自己正在擺弄不應(yīng)該碰的東西。
這是David Stokes提出的觀點(diǎn),他是Percona的技術(shù)布道者,Percona 是一家為開源數(shù)據(jù)庫提供支持和服務(wù)的組織。
他告訴 The New Stack:“部分原因是,如果它在運(yùn)行,并且 [團(tuán)隊(duì)] 不確定數(shù)據(jù)庫的實(shí)際作用或工作原理,他們就不想碰它?!?/p>
他補(bǔ)充說:“同樣,誰會(huì)將某個(gè)東西從生產(chǎn)中取出以對(duì)其進(jìn)行升級(jí)?如果它沒有按時(shí)恢復(fù),會(huì)產(chǎn)生什么后果?”
他建議,這種態(tài)度通常是:“它現(xiàn)在正在運(yùn)行……為什么要碰它?等到它壞了再說?!?/p>
在某些版本的開源數(shù)據(jù)庫達(dá)到其生命周期結(jié)束 (EOL) 的情況下,升級(jí)數(shù)據(jù)庫的問題尤其重要。
例如,在 2023 年,MySQL 5.7走到了盡頭,這是一個(gè)非常流行的版本,已經(jīng)存在了將近十年(它早在 2015 年就發(fā)布了),PostgreSQL 11、Apache Cassandra 3 和 MongoDB 6.3 也是如此。當(dāng)然,當(dāng)一款軟件“退休”(因?yàn)檎也坏礁玫男g(shù)語)時(shí),通常會(huì)有新版本,供應(yīng)商或社區(qū)已決定投入精力——MongoDB 7.0于 2023 年 8 月發(fā)布,PostgreSQL 16于 2023 年 9 月發(fā)布,Apache Cassandra 5于 2023 年 11 月發(fā)布。
生命周期結(jié)束的懸崖邊緣
對(duì)于許多團(tuán)隊(duì)來說,EOL 代表著懸崖邊緣。這意味著該軟件將不再被修補(bǔ)和更新,從而導(dǎo)致安全性問題以及潛在的性能問題風(fēng)險(xiǎn)更大。
當(dāng)然,文檔不會(huì)得到維護(hù),并且任何支持(如果一開始有任何支持)都將完全消失。在某些情況下,這可能是一個(gè)合規(guī)性問題——例如,在支付領(lǐng)域,獲得 PCI-DSS 認(rèn)證的組織——那些需要遵守支付卡行業(yè)數(shù)據(jù)安全標(biāo)準(zhǔn)的組織——必須在發(fā)布后最多一個(gè)月內(nèi)部署任何關(guān)鍵補(bǔ)丁。
Percona 的高級(jí)產(chǎn)品經(jīng)理Jan Wieremjewicz回憶了Log4J 安全漏洞?!跋胂笠幌逻\(yùn)行在生命周期結(jié)束的軟件上,該軟件沒有得到修補(bǔ)以排除潛在的零日漏洞,”他告訴 The New Stack?!懊慨?dāng)我想到這一點(diǎn),我都會(huì)起雞皮疙瘩!”
不升級(jí)數(shù)據(jù)庫的風(fēng)險(xiǎn)很大。從本質(zhì)上講,原本應(yīng)該是更廣泛系統(tǒng)的穩(wěn)固基礎(chǔ)的東西變成了一個(gè)累贅,一個(gè)隨時(shí)可能破壞看似功能穩(wěn)定的一切的定時(shí)炸彈。
但同樣值得注意的是,新版本(尤其是主要版本)的發(fā)布可以為工程團(tuán)隊(duì)帶來機(jī)遇??紤]任何軟件在發(fā)布時(shí)通常具有的新功能和改進(jìn)的體驗(yàn)。雖然其中一些可以被視為營銷炒作,但重要的是要認(rèn)識(shí)到,不升級(jí)可能意味著你錯(cuò)失了更好的做事方式。
為什么不升級(jí)?
鑒于這些重大風(fēng)險(xiǎn),值得深入研究某些組織所特有的回避感(如果不是恐懼的話)。Wieremjewicz 強(qiáng)調(diào)的一個(gè)原因是軟件工程團(tuán)隊(duì)的構(gòu)成發(fā)生了變化。
他說,數(shù)據(jù)庫架構(gòu)師“是一個(gè)瀕臨滅絕的物種”——他們正被網(wǎng)站可靠性工程師擠出。“DBA 越來越少,SRE 越來越多,他們通常不像 DBA 那樣精通數(shù)據(jù)庫問題。”
他認(rèn)為,這在一定程度上是因?yàn)榛谠频臄?shù)據(jù)庫即服務(wù) (DBaaS)。一方面,數(shù)據(jù)庫即服務(wù) (DBaaS) 簡化了數(shù)據(jù)庫配置和管理的許多方面。另一方面,它也讓復(fù)雜性蔓延到其他地方,而技能和組織結(jié)構(gòu)卻以無法應(yīng)對(duì)這種復(fù)雜性的方式演變。
“我們從幾年前可能只有少數(shù)幾個(gè)數(shù)據(jù)庫變成了數(shù)千個(gè),甚至更多?!彼雇锌怂拐f。“你仍然需要有人來檢查查詢并進(jìn)行基本的衛(wèi)生工作,確保帳戶正確、密碼正確、軟件是最新的、復(fù)制正常、數(shù)據(jù)正在備份?!?/p>
這與數(shù)據(jù)庫升級(jí)問題無關(guān):它突出了問題的核心。在數(shù)據(jù)庫被視為輕量級(jí)構(gòu)建塊而不是笨重、看似不可移動(dòng)的錨點(diǎn)的時(shí)代,就在我們被提醒數(shù)據(jù)庫是需要持續(xù)關(guān)注和維護(hù)的復(fù)雜事物時(shí),我們想要假裝它們根本不能被觸及,或者它們是明天的難題。
缺乏吸引力?
有人可能會(huì)認(rèn)為,升級(jí)數(shù)據(jù)庫根本沒有其他項(xiàng)目所具有的吸引力(或者更具體地說,沒有明顯的商業(yè)價(jià)值)。用斯托克斯的話來說,這在很大程度上是“衛(wèi)生工作”。
他用另一種方式解釋道:“一位高級(jí)副總裁進(jìn)來,說,‘嘿,我有一個(gè)關(guān)于我們即將要做的新事物的絕妙想法。這是我的心血項(xiàng)目。我想讓你負(fù)責(zé)?!阏f‘好的,但管理庫存流程的舊系統(tǒng)需要一些升級(jí)?!堑模@是我的心血項(xiàng)目,我真的很需要它?!?/p>
斯托克斯認(rèn)為,這只會(huì)有一種結(jié)果——而且不利于升級(jí)。
“數(shù)據(jù)庫升級(jí)總是很棘手,”他說,“因?yàn)榧词乖谧詈玫那闆r下,它們也只是一些細(xì)微的改變。這需要大量閱讀發(fā)行說明,并希望進(jìn)行一兩次測試,以確保一切正常?!?/p>
開源數(shù)據(jù)庫的獨(dú)特挑戰(zhàn)
在升級(jí)方面,開源數(shù)據(jù)庫特別具有挑戰(zhàn)性。你幾乎只能靠自己,可能依賴于貢獻(xiàn)社區(qū)來獲取相關(guān)文檔甚至支持。
在這些情況下,開源數(shù)據(jù)庫可以為工程團(tuán)隊(duì)提供的靈活性變成了負(fù)擔(dān)。團(tuán)隊(duì)受到一些他們無法輕松管理的事情的阻礙——即使是最活躍的開源項(xiàng)目在為團(tuán)隊(duì)提供特定實(shí)現(xiàn)方面的支持時(shí)也只能做這么多。
這就是 Percona 發(fā)揮作用的地方。它始于一段時(shí)間前,Wieremjewicz 講述了創(chuàng)始人Peter Zaitsev在 MySQL 擔(dān)任開發(fā)人員后離開 MySQL 的故事,他的目標(biāo)是為用戶提供更大的支持。
盡管 MySQL 是該公司起源故事的基本組成部分,但其范圍更廣泛地涵蓋了開源數(shù)據(jù)庫。該團(tuán)隊(duì)很可能為使用 PostgreSQL 或 MongoDB 的公司提供支持,就像為 MySQL 提供支持一樣。
這種平臺(tái)或工具不可知論是有利的,原因有很多。
Wieremjewicz 說:“我們能夠就解決方案提供建議——甚至可以非常真實(shí)和誠實(shí)地從一個(gè)數(shù)據(jù)庫遷移到另一個(gè)數(shù)據(jù)庫,因?yàn)槲覀儾粫?huì)通過推廣我們創(chuàng)建的一些軟件來賺錢。”“這完全是為了用戶的利益?!?/p>
在升級(jí)數(shù)據(jù)庫的特定情況下,供應(yīng)商不可知論可能允許組織在解決數(shù)據(jù)庫問題時(shí)更加開放甚至有創(chuàng)造力。當(dāng)然,從 MongoDB 升級(jí)到 MongoDB 可能有意義,但如果探索一個(gè)新數(shù)據(jù)庫與你的特定技術(shù)環(huán)境更相關(guān)呢?
即使擁有最博學(xué)多才和最開放的團(tuán)隊(duì),也很難自己做出這些決定——外部的、不可知的建議在提供必要的支持和變革動(dòng)力方面可能非常有價(jià)值。
升級(jí)的關(guān)鍵:預(yù)測和準(zhǔn)備
不可否認(rèn),升級(jí)數(shù)據(jù)庫可能具有挑戰(zhàn)性。至關(guān)重要的是規(guī)劃并保持領(lǐng)先一步。
Wieremjewicz 說:“你必須提前計(jì)劃,不能等到生命結(jié)束才采取行動(dòng),你應(yīng)該更早地預(yù)測?!?/p>
未能這樣做可能會(huì)產(chǎn)生重大的技術(shù)問題——甚至商業(yè)問題——這些問題在以后更難糾正。
Stokes 不認(rèn)為有一種正確的方法來升級(jí)數(shù)據(jù)庫。它的方法最終取決于實(shí)際執(zhí)行它的組織的成熟度和信心。
他說:“這是我們正在學(xué)習(xí)騎自行車的事情之一。”“有些人跳上去自己做——其他人需要有人在學(xué)習(xí)如何上下踩踏板和如何轉(zhuǎn)向時(shí)安撫并穩(wěn)定座椅。”他確信,只要有人需要了解數(shù)據(jù)庫,Percona 就會(huì)對(duì)這些客戶保持價(jià)值:“我們已經(jīng)存在足夠長的時(shí)間,知道如何繞過坑洼,避免上坡。”















 
 
 
















 
 
 
 