當有人問:資料庫分哪幾類?
我們通常的回答是:關係型的和非關係型的。
這個答案沒毛病,但是略顯簡單粗暴。如果深究一下,非關係型資料庫還有很多種型。
有種分類方法,把資料庫分成了8個大類:你沒看錯,是資料庫庫庫庫庫庫庫庫!
為什麼要分這麼細呢?因為時代不同了,現代化應用對數據處理的要求越來越苛刻。
傳統的關係型資料庫,發展了幾十年,遵從ACID原則,強關聯、數據一致性,擅長事務處理。
事務處理這個功能很重要,比如用銀行卡轉帳,必須保證對方帳戶錢增加的同時,而你的帳戶對應滴減少了,中間出了差錯,資料庫就要「回滾」。
多少年來的金融級交易,都離不開關係型資料庫的支撐,而企業大量的ERP、CRM系統,都是靠關係型資料庫扛著的。
可是,隨著社交、電商、IoT等業務和應用蓬勃發展,數據尤其是非結構化數據爆發增長,傳統關係型資料庫有點獨木難支。
於是,資料庫進入了八仙過海,各顯神通的時代,不同的資料庫在各自的崗位上,提供了獨特的價值。
舉個例子,在電商的場景下,用戶的主要身份信息帳號密碼等,一般存在關係型資料庫裡。
但用戶的「購物車」,有人放了1件商品,有的剁手黨可能會放100件商品,用關係型資料庫存儲就很不靈活。
這時候,鍵值資料庫就派上了用場,用「鍵值對」來存儲用戶的購物車信息,水平可以任意擴展。
再比如在交通和製造場景下,數據需要按照時間順序進行存儲,這裡的時間不只是一個度量標準,不是一個欄位,而是一個坐標的主坐標軸。
這時候,就需要時間序列資料庫,有點像我們的常見的股票交易數據,橫軸是時間,縱軸是不同時間下的所有數據。
再比如社交網絡應用,需要快速查找某人與某人的關係。
此時如果使用圖資料庫,可以快速get到結果,但是用關係型資料庫,需要大量的查詢時間,甚至超時。
總之,應用千差萬別,數據豐富多彩,要想應用跑的爽,就要投其所好,選最合適的資料庫。
而且如今,大多數現代應用,都不是單一類型資料庫來支撐,往往眾人拾柴,各幹自己擅長的一部分。
所以,對於架構師來說,根據自家業務,把資料庫選好、規劃好很重要,同時,還要有DBA來配置和管理資料庫。
想想就很頭大!
有沒有供應商,能夠提供一攬子解決方案呢?
還真有,這就是AWS,上面提到的8種類別的資料庫,AWS全部提供!
AWS能提供的資料庫類型和引擎太多,我們就挑幾類來講講吧。
首先還是說關係型資料庫,雖然資料庫分類這麼多,但站C位的還是「關係」,大多數系統的主數據都還是用關係型資料庫。
AWS的託管式RDS服務,提供了多種引擎。
不管開發者習慣用哪種,商用的Oracle、SQL Server,開源的MySQL、MariaDB、PostgreSQL,在AWS上都能找到。
同時,AWS還提供了一套自家特色RDS方案,這就是著名的「極光」資料庫——Amazon Aurora。
Aurora提供MySQL和PG兩種兼容引擎,跨3個AZ最多提供15個讀副本、6份數據拷貝,跨區橫向擴展讀寫,跨區複製。
「極光普照」之下,吞吐量是MySQL的5倍、PG的3倍,成本卻只有傳統商業級資料庫的十分之一。
看到「3AZ」,是不是擔心部署和管理很複雜?沒關係,Aurora是全託管的,所有操作,雲上幫你全簡化。
同時,Aurora跟AWS上的機器學習、BI、分析類的組件可以深度集成,你甚至不需要專業的機器學習知識,用標準的SQL語句就能進行機器學習預測了。
著名的虎牙直播,就採用了Aurora資料庫解決方案,相對靜態的信息,使用Aurora存儲,動態的信息則使用DynamoDB存儲。
除了性能比MySQL好太多以外,故障恢復也是極速的,異常狀態下,10s內就能自動實現故障轉移,終端用戶無感知。
另外,虎牙直播的Nimo TV是出海業務,利用AWS全球資料庫功能,可以就近部署,提升用戶本地體驗。
我們再來說說AWS上的其它非關係型資料庫吧。
當下最流行的緩存資料庫是Redis和Memcached,AWS提供ElastiCache,兼容這兩種引擎,為實時應用提供亞毫秒延遲。
如果談到文檔資料庫,大家肯定會對MongoDB很熟悉,AWS的DocumentDB提供對MongoDB的兼容能力。
不止於兼容,DocumentDB比標準的MongoDB託管服務快兩倍,支持自動故障轉移,並在3個AZ上提供6份數據副本。
AWS上的圖資料庫託管服務叫做Neptune,可存儲數十億的「關係」,查詢起來,延遲是毫秒級別的。
Amazon Neptune被廣泛應用於社交網絡、知識圖譜、生命科學、IT運維等領域。
還有寬表資料庫Amazon Keyspaces,分類帳資料庫Amazon QLDB,以及剛剛上新的時序資料庫Amazon Timestream……
總之,只有想不到的,沒有AWS做不到的。
講到這裡,我想大家對AWS雲上資料庫服務的類型和能力,大概都心中有數了。
這兩年,我也看到越來越多本地部署的資料庫,被雲上資料庫替代和「碾壓」。
那麼,如果你也有了資料庫上雲的想法,如何才能方便、安全、快捷地把本地數據「搬」上雲呢?
AWS提供了一系列DMS服務:從線下到雲上、從庫到庫、庫結構轉換……,數據複製可實現近乎0停機時間,以保障業務不中斷,客戶無感知。
這種遷移服務靠譜不?Amazon自己就是最好的成功案例。
亞馬遜公司100多個業務團隊,各種複雜的、在線的、高並發的業務,電商、廣告、視頻、遊戲、支付,原來總共使用了7500多個甲骨文資料庫,數據多達75PB。
如今,這些資料庫全部被遷移、分流到AWS多種雲資料庫上了。
自己家的雲資料庫到底香不香?遷移後資料庫成本降低60%,管理工作減少了70%,而對於重要的應用,性能提高40%!
這就是活生生的雲資料庫最佳實踐呀!
雲上資料庫庫庫庫庫庫庫庫,八仙過海。
AWS,就是那片雲海!