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