關(guān)系型數(shù)據(jù)庫使用頻率非常高,在2020年11月的十大最流行數(shù)據(jù)庫TOP10排行中,超過一半的都是關(guān)系型數(shù)據(jù)庫,此外,還有一個(gè)文檔數(shù)據(jù)庫、一個(gè)鍵值數(shù)據(jù)庫、一個(gè)寬表數(shù)據(jù)庫、還有搜索引擎數(shù)據(jù)庫,不過,從類型上來看,這還不夠,AWS在公有云上提供的數(shù)據(jù)庫類型就有八種。
如上圖所示,AWS上一共有八個(gè)類別的數(shù)據(jù)庫,基本涵蓋了各種常見的數(shù)據(jù)庫,除了關(guān)系型數(shù)據(jù)庫,還有鍵值數(shù)據(jù)庫、寬表數(shù)據(jù)庫、文檔數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫、圖數(shù)據(jù)庫、時(shí)序數(shù)據(jù)庫以及分類賬數(shù)據(jù)庫,其中,關(guān)系型數(shù)據(jù)庫種類最多,用的人也最多。
我們今天從最常用的關(guān)系型數(shù)據(jù)庫開始,梳理一下AWS云上數(shù)據(jù)庫,以及他們的主要用法。
AWS RDS是2009年發(fā)布的,它如今提供五種托管的關(guān)系型數(shù)據(jù)庫,包括MySQL、MariaDB、PostgreSQL、Oracle和SQL Server,用戶可以將數(shù)據(jù)庫從本地遷移到云端數(shù)據(jù)庫,AWS提供多個(gè)版本供選擇,基本可以不用做任何修改將數(shù)據(jù)庫遷移到云上。
這種托管的方案照顧了用戶原有的使用習(xí)慣,便于用戶遷移。云端關(guān)系型數(shù)據(jù)庫用起來更省心,不用進(jìn)行各種麻煩的運(yùn)維工作。
普通用戶只需點(diǎn)擊幾下鼠標(biāo)就可以創(chuàng)建一個(gè)關(guān)系型數(shù)據(jù)庫(RDS),以MySQL為例,可以選擇數(shù)據(jù)庫的版本,可以選擇運(yùn)行MySQL的主機(jī)的規(guī)格,可以配置存儲(chǔ)類型(是SSD還是磁盤),在容量不夠的時(shí)候還能自動(dòng)擴(kuò)容,還能設(shè)置多可用區(qū)備份實(shí)例,以確保安全。
另外,AWS還提供了一種自己獨(dú)有的,專門為云環(huán)境而設(shè)計(jì)的關(guān)系型數(shù)據(jù)庫——Amazon Aurora,它是2014年發(fā)布的一種兼容MySQL和PostgreSQL的關(guān)系型數(shù)據(jù)庫,所謂兼容,就意味著MySQL和PostgreSQL可以無縫遷移到Amazon Aurora。
用戶可以像剛才一樣進(jìn)行各種設(shè)置,也可以選擇無服務(wù)器的模式,這種模式其實(shí)是AWS更推薦的方式,它可以不用設(shè)置主機(jī)、存儲(chǔ)類型以及多可用區(qū),只管用就可以了,不用關(guān)心性能和可用性的問題,也不用任何升級和維護(hù)的操作。
Amazon Aurora既滿足了商業(yè)數(shù)據(jù)庫的性能和可用性的要求,同時(shí),又把成本降低到商業(yè)數(shù)據(jù)庫的1/10,此外,AWS還做了性能上的優(yōu)化,使得Amazon Aurora的吞吐量可以達(dá)到MySQL的5倍、PostgreSQL的3倍。
由于Aurora底層使用了分布式存儲(chǔ)系統(tǒng),可以將數(shù)據(jù)存儲(chǔ)在三個(gè)不同可用區(qū)的數(shù)百個(gè)存儲(chǔ)節(jié)點(diǎn)上,所以,它的擴(kuò)展性很好。性能擴(kuò)展性方面,三個(gè)可用區(qū)最多可設(shè)置15個(gè)低延遲讀取副本來提升性能,能滿足每秒數(shù)百萬次的讀取請求。在容量擴(kuò)展性方面,它可以自動(dòng)增加存儲(chǔ),每個(gè)實(shí)例最高增長到128TB。
在可用性方面和持久性方面,Amazon Aurora提供高于99.99%的可用性,可跨3個(gè)可用區(qū)復(fù)制 6份數(shù)據(jù),并能將數(shù)據(jù)持續(xù)備份到 Amazon S3 中。它能以透明的方式從物理存儲(chǔ)故障中恢復(fù),實(shí)例故障轉(zhuǎn)移用時(shí)通常不超過 30 秒。在安全性方面,AWS也做了很多特殊處理,比如有VPC網(wǎng)絡(luò)隔離,還有各種加密操作。
Amazon Aurora另外一個(gè)特點(diǎn)是支持并行查詢,可以同時(shí)運(yùn)行分析查詢和事務(wù)查詢,Amazon Aurora可以跨成百上千個(gè)存儲(chǔ)節(jié)點(diǎn)進(jìn)行查詢,多節(jié)點(diǎn)并行操作大大提升了查詢的速度,而且,這一模式還能減少對于網(wǎng)絡(luò)、CPU 和緩沖池資源的爭奪,在并行查詢時(shí)性能表現(xiàn)更穩(wěn)定。
作為AWS最引以為傲的數(shù)據(jù)庫產(chǎn)品,Amazon Aurora能與AWS平臺(tái)的其他服務(wù)結(jié)合起來使用,能與 Amazon Athena(交互式sql查詢服務(wù) )和Amazon QuickSight(BI服務(wù))結(jié)合使用,能與Amazon SageMaker(機(jī)器學(xué)習(xí)IDE工具)和Amazon Comprehend(自然語言處理)集成使用,結(jié)合起來使用,有助于快速構(gòu)建數(shù)據(jù)洞察能力。
廣州虎牙信息科技有限公司海外游戲直播業(yè)務(wù)后臺(tái)負(fù)責(zé)人馬昭表示:“AWS成熟穩(wěn)定,是虎牙直播延伸國際業(yè)務(wù)的理想選擇?!?/p>
虎牙直播在數(shù)據(jù)庫后臺(tái)中使用了Amazon Aurora,Amazon Aurora主要用來存儲(chǔ)用戶的靜態(tài)基礎(chǔ)信息,在使用中,Amazon Aurora的自動(dòng)擴(kuò)容,能夠單獨(dú)升級計(jì)算實(shí)例,5倍于MySQL的性能表現(xiàn),10秒左右的快速故障轉(zhuǎn)移,以及全球數(shù)據(jù)庫功能都是虎牙直播非常認(rèn)可的方面。
當(dāng)然,只有Amazon Aurora是不夠的,虎牙直播還用了Amazon DynamoDB來存儲(chǔ)動(dòng)態(tài)信息,包括支付、狀態(tài)、好友關(guān)注關(guān)系等動(dòng)態(tài)信息,Amazon DynamoDB的優(yōu)勢是有穩(wěn)定的高性能、低延遲表現(xiàn),特別是在當(dāng)流量突發(fā)的時(shí)候更有價(jià)值,比如網(wǎng)紅大主播上線的時(shí)候會(huì)引起流量暴漲,而Amazon DynamoDB都能始終如一地提供毫秒級性能,。
這里主要想談的是Amazon Aurora,關(guān)于Amazon DynamoDB的介紹可以接著往下看。
Amazon DynamoDB是AWS在2012年發(fā)布的鍵/值和文檔數(shù)據(jù)庫,最早是為了處理亞馬遜電商業(yè)務(wù)高峰期系統(tǒng)瓶頸問題,經(jīng)過仔細(xì)分析后卻發(fā)現(xiàn)原來70%的運(yùn)營需求是鍵值型數(shù)據(jù)的查詢,且只需要返回含有主鍵值的一行數(shù)據(jù)即可。于是AWS工程師們意識(shí)到,這樣大規(guī)模的特定需求,需要一種不同類型的數(shù)據(jù)庫,這就是非關(guān)系型數(shù)據(jù)為Amazon DynamoDB,最終被亞馬遜電商驗(yàn)證的一個(gè)方案,可以說,它的出生和演進(jìn)都與互聯(lián)網(wǎng)業(yè)務(wù)的有著千絲萬縷的聯(lián)系。
Amazon DynamoDB屬于NoSQL(No-Not Only-不只是SQL的數(shù)據(jù)庫)數(shù)據(jù)庫的一種,它每天可以應(yīng)對超過十萬億次,峰值每秒超兩千萬次的請求,存儲(chǔ)容量可以達(dá)到數(shù)個(gè)PB,非常適合移動(dòng)、Web、游戲、廣告技術(shù)、物聯(lián)網(wǎng)等對查詢速度要求很高的場景。而且,操作簡單易上手,運(yùn)維管理成本也低,比較受歡迎。
Amazon ElastiCache是2011年發(fā)布的一款托管內(nèi)存數(shù)據(jù)庫服務(wù),它支持兩種開源的內(nèi)存數(shù)據(jù)庫引擎:Redis和Memcached,用戶最看重的就是內(nèi)存數(shù)據(jù)庫的高性能表現(xiàn),它可以提供亞毫秒級的延時(shí)。
場景方面,它適合緩存用戶的信息(比如用戶會(huì)話),它適合用在電商平臺(tái),適合用來構(gòu)建聊天室,適合用來創(chuàng)建游戲排行榜,總之是數(shù)據(jù)量特別大、延遲要求又高的那類場景,以互聯(lián)網(wǎng)類應(yīng)用最為典型。
Amazon ElastiCache在安全性方面也做了許多工作,比如,有用于集群隔離、靜止/傳輸加密和HIPAA合規(guī)的VPC,以此保護(hù)用戶的敏感信息。
擴(kuò)展性方面也是優(yōu)勢所在,它可以通過創(chuàng)建副本進(jìn)行在線擴(kuò)展,而且可以擴(kuò)展的很大,Amazon ElastiCache for Redis甚至可以擴(kuò)展到320TB,Amazon ElastiCache for Memcached可以擴(kuò)展到12TB。
高可用性方面,通過多可用區(qū)實(shí)現(xiàn)自動(dòng)的故障切換,當(dāng)主節(jié)點(diǎn)出現(xiàn)故障,Amazon ElastiCache在將副本提升為主節(jié)點(diǎn)時(shí),能最大限度降低影響。
與直接使用開源的Redis和Memcached相比,Amazon ElastiCache提供了經(jīng)過端到端軟硬件優(yōu)化功能,而且,有一幫AWS的專家在盯著開源軟件可能出現(xiàn)的安全問題,如果有問題能盡早下手解決。
Amazon DocumentDB是2019年1月發(fā)布的,這是一款快速的、可擴(kuò)展的、高可用的文檔數(shù)據(jù)庫,它是AWS開發(fā)的能兼容Amazon MongoDB的數(shù)據(jù)庫,用Amazon MongoDB的人幾乎可以無縫的切換到Amazon DocumentDB上來,可以復(fù)用原來的代碼。
Amazon MongoDB存儲(chǔ)的所謂文檔其實(shí)是JSON數(shù)據(jù),JSON是一種典型的半結(jié)構(gòu)數(shù)據(jù),它最大的特點(diǎn)是能適應(yīng)字段不確定的場景,文件模型非常靈活,便于對應(yīng)用程序進(jìn)行快速調(diào)整和迭代,從而縮短開發(fā)時(shí)間,典型場景方面,比如在電商平臺(tái)里它負(fù)責(zé)存儲(chǔ)商品信息、買家評論等內(nèi)容。
用戶自建并管理Amazon MongoDB數(shù)據(jù)庫還是挺麻煩的,在數(shù)據(jù)量上來之后的性能下降令很多人頭疼,而Amazon DocumentDB托管服務(wù)就比較省心了,Amazon DocumentDB在性能上做了一些優(yōu)化,可以達(dá)到現(xiàn)有托管的Amazon MongoDB的服務(wù)量的兩倍。
Amazon DocumentDB架構(gòu)設(shè)計(jì)上將存儲(chǔ)和計(jì)算進(jìn)行分離,兩部分資源可以獨(dú)立擴(kuò)展,幾分鐘時(shí)間就可以在三個(gè)可用區(qū)內(nèi)添加多達(dá)15個(gè)低延遲的只讀副本,來輕松地把讀取的容量增至每秒鐘數(shù)百萬個(gè)請求,無論數(shù)據(jù)的大小都能做到這點(diǎn)。
可用性方面,在設(shè)計(jì)上實(shí)現(xiàn)了四個(gè)9的可用性,可以在三個(gè)可用區(qū)里復(fù)制了六個(gè)數(shù)據(jù)副本。Amazon DocumentDB 采用一種有容錯(cuò)能力和自我修復(fù)能力的分布式存儲(chǔ)系統(tǒng),每個(gè)數(shù)據(jù)庫集群可自動(dòng)擴(kuò)展至 64TB。
2020年4月,AWS正式推出Amazon Keyspaces,它是一款兼容Apache Cassandra的數(shù)據(jù)庫服務(wù),原來Apache Cassandra用戶可以無縫切換到新的Apache Keyspaces上。發(fā)布后不久,中國的兩個(gè)區(qū)域(由光環(huán)新網(wǎng)運(yùn)營的 AWS 中國(北京)區(qū)域和由西云數(shù)據(jù)運(yùn)營的 AWS 中國(寧夏)區(qū)域)也很快都陸續(xù)上線了。
Apache Cassandra在2011年發(fā)布了第一個(gè)正式版本,它是一款典型的寬表數(shù)據(jù)庫,數(shù)據(jù)模型基于谷歌的 Bigtable,存儲(chǔ)則采用了亞馬遜的 Dynamo 的分布式設(shè)計(jì)方案,AWS后來提供了Apache Cassandra的托管服務(wù)。
考慮到Apache Cassandra存在的一些問題,AWS修改了Apache Cassandra的代碼,使得它能夠作為一款托管的無服務(wù)器服務(wù),讓用戶無需做任何管理操作,而且可以按照實(shí)際使用的資源付費(fèi),可以用它輕松構(gòu)建一個(gè)每可處理數(shù)千個(gè)需求的,吞吐量和存儲(chǔ)空間幾乎無限的應(yīng)用程序。
Amazon Neptune是2018年5月發(fā)布的一款完全托管的圖數(shù)據(jù)庫服務(wù),所謂圖數(shù)據(jù)庫跟圖片沒關(guān)系,它描述的是現(xiàn)實(shí)世界中個(gè)體和個(gè)體之間網(wǎng)絡(luò)關(guān)系的數(shù)據(jù)結(jié)構(gòu),雖然有一些開源的實(shí)現(xiàn)方案,但AWS并沒有直接采用,而是兼容了部分標(biāo)準(zhǔn)之后提供了專有服務(wù)。
圖數(shù)據(jù)庫的典型場景不難想象,它適合在社交網(wǎng)絡(luò)上管理社交關(guān)系,實(shí)現(xiàn)好友推薦功能,在電商網(wǎng)站上猜你想買,推薦商品,此外還有知識(shí)圖譜等場景,總之,是數(shù)據(jù)與數(shù)據(jù)有關(guān)聯(lián)關(guān)系的應(yīng)用。
Amazon Neptune提供了圖數(shù)據(jù)庫引擎,可以存儲(chǔ)十億個(gè)關(guān)系,并讓查詢的延遲降低到毫秒級,關(guān)聯(lián)關(guān)系的查詢其實(shí)很復(fù)雜,如果用關(guān)系型數(shù)據(jù)庫處理這種數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫操作非常多,性能會(huì)下降的非常厲害,而Amazon Neptune的查詢能將延遲降到毫秒級。
這里我們看一下Nike耐克的應(yīng)用,Nike有一款應(yīng)用,它需要記錄運(yùn)動(dòng)員的技能、喜歡的運(yùn)動(dòng)、關(guān)注它的粉絲、以及粉絲喜歡的運(yùn)動(dòng),數(shù)據(jù)相互間是有關(guān)系的,原本采用關(guān)系型數(shù)據(jù)庫的話性能會(huì)很差,但當(dāng)采用了Amazon Neptune以后,性能得到了非常大的提升,Nike有2500萬個(gè)用戶的關(guān)系存儲(chǔ)在Amazon Neptune中。
Amazon Timestream是2020年9月底發(fā)布的一款時(shí)間序列數(shù)據(jù)庫服務(wù),時(shí)間序列數(shù)據(jù)是按時(shí)間順序記錄的數(shù)據(jù)列,對時(shí)間序列進(jìn)行分析可以找出樣本內(nèi)時(shí)間序列的統(tǒng)計(jì)特性和發(fā)展規(guī)律,構(gòu)建時(shí)間序列模型,進(jìn)行預(yù)測。
Amazon Timestream適用于物聯(lián)網(wǎng)和運(yùn)營應(yīng)用程序,該服務(wù)每天可以存儲(chǔ)和分析數(shù)萬億個(gè)事件,與關(guān)系型數(shù)據(jù)庫相比,速度提高了1000 倍,而成本僅為關(guān)系數(shù)據(jù)庫的十分之一。
作為一款托管服務(wù),Amazon Timestream節(jié)省了管理時(shí)序數(shù)據(jù)的時(shí)間和成本,作為一款無服務(wù)器服務(wù),它的性能和容量能自動(dòng)伸縮,可以近乎無限地進(jìn)行擴(kuò)容,用戶無需關(guān)注底層基礎(chǔ)設(shè)施。
Amazon Timestream有數(shù)據(jù)分層策略,把近期數(shù)據(jù)保留在內(nèi)存中,歷史數(shù)據(jù)放在低成本存儲(chǔ)層,Amazon Timestream的查詢引擎可以對各種數(shù)據(jù)層的數(shù)據(jù)進(jìn)行查詢,此外,Amazon Timestream 內(nèi)置了時(shí)間序列分析函數(shù),幫助用戶近乎實(shí)時(shí)地識(shí)別數(shù)據(jù)的趨勢和模式。
此外,Amazon Timestream 還能與AWS IoT Core(用于 IoT 數(shù)據(jù)收集)、Amazon Kinesis 和 Amazon MSK(用于流式處理數(shù)據(jù))、Amazon QuickSight(用于無服務(wù)器商業(yè)智能)和 Amazon SageMaker等服務(wù)集成來使用。
Amazon Quantum Ledger Database (Amazon QLDB)是2019年9月發(fā)布的托管的分類帳數(shù)據(jù)庫,可用于跟蹤每次的應(yīng)用程序數(shù)據(jù)更改記錄,它會(huì)不斷維護(hù)完整的,而且是可驗(yàn)證的更改歷史記錄,這些記錄無法修改,類似于區(qū)塊鏈。
應(yīng)用場景方面,它適合用來記錄企業(yè)的經(jīng)濟(jì)、金融歷史,或者修改維護(hù)的歷史,或者銀行借貸,或者保險(xiǎn)索賠數(shù)據(jù)。實(shí)際應(yīng)用場景對于可擴(kuò)展性有很高要求,這就是QLDB作為全托管的分類帳數(shù)據(jù)庫的優(yōu)勢所在。
寶馬使用QLDB構(gòu)建了一款應(yīng)用,這款應(yīng)用負(fù)責(zé)追蹤汽車數(shù)據(jù)的變化,記錄哪些數(shù)據(jù)呢?買車之后,加油、年檢、交通事故、維修記錄、換輪胎等都會(huì)記錄,而這些數(shù)據(jù)是不可修改的,數(shù)據(jù)本身非??尚?,為汽車交易提供了非常有力的支撐,都知道二手車市場水非常深,這款應(yīng)用能避免篡改記錄讓二手車買家蒙受損失。
結(jié)語
以上就是AWS提供的八種數(shù)據(jù)庫服務(wù)的簡要介紹,可以看出,類別還是非常全的。
對于比較經(jīng)典的主流數(shù)據(jù)庫,AWS提供了托管現(xiàn)有服務(wù)和自主開發(fā)新服務(wù)的模式,比如RDS,照顧用戶原有應(yīng)用資產(chǎn)。對于比較新的,沒有特別有影響力的數(shù)據(jù)庫類型,AWS則是以自己的實(shí)現(xiàn)方式為主,比如圖數(shù)據(jù)庫和分類賬數(shù)據(jù)庫。
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫是最常用的類型,而新的數(shù)據(jù)庫則更能靈活滿足用戶在新場景上的需求,AWS的數(shù)據(jù)庫服務(wù)在性能上、可擴(kuò)展性上、在安全和可用性上都有許多設(shè)計(jì),能讓用戶把大部分注意力放在業(yè)務(wù)方面。
云上數(shù)據(jù)庫以較低的成本為大部分用戶輸出了AWS優(yōu)化過的最佳實(shí)踐,為了方便用戶使用這些服務(wù),AWS提供了便捷的數(shù)據(jù)庫遷移服務(wù)——Amazon Database Migration Service ,方便用戶遷入遷出。
據(jù)資料顯示,DMS在2019年對超過20多萬個(gè)數(shù)據(jù)庫進(jìn)行了遷移,這個(gè)數(shù)字超過了2016年到2018年的總和,數(shù)據(jù)庫向云遷移的速度在加快。