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