正確選擇開源數(shù)據(jù)庫的5個技巧
對關(guān)鍵應(yīng)用的選擇不容許絲毫錯誤。
你或許會遇到需要選擇合適的開源數(shù)據(jù)庫的情況。但這無論對于開源方面的老手或是新手,都是一項艱巨的任務(wù)。
在過去的幾年中,采用開源技術(shù)的企業(yè)越來越多。面對這樣的趨勢,眾多開源應(yīng)用公司都紛紛承諾自己提供的解決方案能夠各種問題、適應(yīng)各種負(fù)載。但這些承諾不能輕信,在開源應(yīng)用上的選擇是重要而艱難的,尤其是數(shù)據(jù)庫這種關(guān)鍵的應(yīng)用。
憑借我在 Percona 和其它公司擔(dān)任 IT 專家的經(jīng)驗(yàn),我很幸運(yùn)能夠指導(dǎo)其他人在開源技術(shù)的選擇上做出正確的決策,因?yàn)樾枰紤]的重要因素太多了。希望通過這篇文章能夠向大家分享這方面的一些技巧。
有一個明確的目標(biāo)
這一點(diǎn)看似簡單,但在和很多人聊過 MySQL、MongoDB、PostgreSQL 之后,我覺得這一點(diǎn)才是最重要的。
面對繁雜的開源數(shù)據(jù)庫,更需要明確自己的目標(biāo)。無論這個數(shù)據(jù)庫是作為開發(fā)用的標(biāo)準(zhǔn)化數(shù)據(jù)庫后端,抑或是用于替換遺留代碼中的原有數(shù)據(jù)庫,這都是一個明確的目標(biāo)。
目標(biāo)一旦確定,就可以集中精力與開源軟件的提供方商討更多細(xì)節(jié)了。
了解你的工作負(fù)載
盡管開源數(shù)據(jù)庫技術(shù)的功能越來越豐富,但這些新加入的功能都不太具有普適性。譬如 MongoDB 新增了事務(wù)的支持、MySQL 新增了 JSON 存儲的功能等等。目前開源數(shù)據(jù)庫的普遍趨勢是不斷加入新的功能,但很多人的誤區(qū)卻在于沒有選擇最適合的工具來完成自己的工作 —— 這樣的人或許是一個自大的開發(fā)者,又或許是一個視野狹窄的主管 —— 最終導(dǎo)致公司業(yè)務(wù)上的損失。最致命的是,在業(yè)務(wù)初期,使用了不適合的工具往往也可以順利地完成任務(wù),但隨著業(yè)務(wù)的增長,很快就會到達(dá)瓶頸,盡管這個時候還可以替換更合適的工具,但成本就比較高了。
例如,如果你需要的是數(shù)據(jù)分析倉庫,關(guān)系數(shù)據(jù)庫可能不是一個適合的選擇;如果你處理事務(wù)的應(yīng)用要求嚴(yán)格的數(shù)據(jù)完整性和一致性,就不要考慮 NoSQL 了。
不要重新發(fā)明輪子
在過去的數(shù)十年,開源數(shù)據(jù)庫技術(shù)迅速發(fā)展壯大。開源數(shù)據(jù)庫從新生,到受到質(zhì)疑,再到受到認(rèn)可,現(xiàn)在已經(jīng)成為很多企業(yè)生產(chǎn)環(huán)境的數(shù)據(jù)庫。企業(yè)不再需要擔(dān)心選擇開源數(shù)據(jù)庫技術(shù)會產(chǎn)生風(fēng)險,因?yàn)殚_源數(shù)據(jù)庫通常都有活躍的社區(qū),可以為越來越多的初創(chuàng)公司、中型企業(yè)甚至 500 強(qiáng)公司提供開源數(shù)據(jù)庫領(lǐng)域的支持和第三方工具。
Battery Ventures 是一家專注于技術(shù)的投資公司,最近推出了一個用于跟蹤***開源項目的 BOSS 指數(shù) 。它提供了對一些被廣泛采用的開源項目和活躍的開源項目的詳細(xì)情況。其中,數(shù)據(jù)庫技術(shù)毫無懸念地占據(jù)了榜單的主導(dǎo)地位,在前十位之中占了一半。這個 BOSS 指數(shù)對于剛接觸開源數(shù)據(jù)庫領(lǐng)域的人來說,這是一個很好的切入點(diǎn)。當(dāng)然,開源技術(shù)的提供者也會針對很多常見的典型問題給出對應(yīng)的解決方案。
我認(rèn)為,你想要做的事情很可能已經(jīng)有人解決過了。即使這些先行者的解決方案不一定完全契合你的需求,但也可以從他們成功或失敗的案例中根據(jù)你自己的需求修改得出合適的解決方案。
如果你采用了一個最前沿的技術(shù),這就是你探索的好機(jī)會了。如果你的工作負(fù)載剛好適合新的開源數(shù)據(jù)庫技術(shù),放膽去嘗試吧。***個吃螃蟹的人總是會得到意外的挑戰(zhàn)和收獲。
先從簡單開始
你的數(shù)據(jù)庫實(shí)際上需要達(dá)到多少個 9 的可用性?對許多公司來說,“實(shí)現(xiàn)高可用性”僅僅只是一個模糊的目標(biāo)。當(dāng)然,最常見的答案都會是“它是關(guān)鍵應(yīng)用,我們無論多短的停機(jī)時間都是無法忍受的”。
數(shù)據(jù)庫環(huán)境越復(fù)雜,管理的難度就越大,成本也會越高。理論上你總可以將數(shù)據(jù)庫的可用性提得更高,但代價將會是大大增加的管理難度和性能下降。所以,先從簡單開始,直到有需要時再逐步擴(kuò)展。
例如,Booking.com 是一個有名的旅游預(yù)訂網(wǎng)站。但少有人知的是,它使用 MySQL 作為數(shù)據(jù)庫后端。 Booking.com 高級系統(tǒng)架構(gòu)師 Nicolai Plum 曾經(jīng)發(fā)表過一次演講,講述了他們公司使用 MySQL 數(shù)據(jù)庫的歷程。其中一個重點(diǎn)就是,在初始階段數(shù)據(jù)庫可以被配置得很簡單,然后逐漸變得復(fù)雜。對于早期的數(shù)據(jù)庫需求,一個簡單的主從架構(gòu)就足夠了,但隨著工作負(fù)載和數(shù)據(jù)量的增加,數(shù)據(jù)庫引入了負(fù)載均衡、多個讀取副本,還使用 Hadoop 進(jìn)行分析。盡管如此,早期的架構(gòu)仍然是非常簡單的。
有疑問,找專家
如果你仍然不確定數(shù)據(jù)庫選擇的是否合適,可以在論壇、網(wǎng)站或者與軟件的提供者處商討。研究各種開源數(shù)據(jù)庫是否滿足自己的需求是一件很有意義的事,因?yàn)榭倳l(fā)現(xiàn)你從不知道的技術(shù)。而開源社區(qū)就是分享這些信息的地方。
當(dāng)你接觸到開源軟件和軟件提供者時,有一件重要的事情需要注意。很多公司都有開放的核心業(yè)務(wù)模式,鼓勵采用他們的數(shù)據(jù)庫軟件。你可以只接受他們的部分建議和指導(dǎo),然后用你自己的能力去研究和探索替代方案。
總結(jié)
選擇正確的開源數(shù)據(jù)庫是一個重要的過程。很多時候,人們都會在真正理解需求之前就做出決定,這是本末倒置的。