細數AWS的6款數據庫產品

19758825-8af7068b0aff924b.jpg

在談這家喪心病狂的公司之前,先說說“正常”的IT公司是怎樣的:

一家IT公司,一般只會有一款數據庫產品。

我們衆所周知的Oracle, Microsoft(SQL), MongoDB等等都是這樣。

(像Oracle買了擁有MySQL的Sun這樣的,不能算了,畢竟MySQL不是Oracle最開始自主研發的。)

爲什麼會這樣呢?原因主要有2個:

1. 如果一家公司,能有一款拿得出手的數據庫產品,就可以在整個IT業界立足了,實在沒有必要開發第二款數據庫。

2. 數據庫系統的開發成本也比較高,投入很大,很少有公司有能力去開發多款數據庫。

所以,反過來說,如果一家IT公司,它開發了很多款不同類型的數據庫,那它一定有2個特質:

1. 有野心:一款數據庫,不足以實現它獨霸整個DBaaS(數據庫即服務)的野心,所以它要開發6款;

2. 有錢:數據庫的開發不像軟件開發,人才很少,重金買人,才能開發數據庫。

看來,“喪心病狂”也不是那麼容易的!

今天我們要講的這家“喪心病狂”的開發了6款數據庫產品的公司就是亞馬遜(Amazon),確切地說是亞馬遜的雲計算部門,也就是AWS。

19758825-a5fbc0863edc7ec1.jpg

AWS有哪6款數據庫呢?

確切地說,我認爲是7款數據庫:

* RDS

* RDS-Aurora

* Redshift

* DynamoDB

* Neptune

* Timestream

* QLDB

(RDS和RDS-Aurora有些人認爲是同款數據庫。)

這幾款數據庫真是各有神通,幾乎把所有數據庫相關的應用場景都捕捉到了。

290

接下來逐一介紹下:

RDS (Relational Database Service)

RDS顧名思義就是“關係型數據庫”。這裏其實亞馬遜移植了市面上常用的幾款數據庫,做成了“雲”的版本給客戶,包括:Oracle,MySQL, MS SQL, MariaDB, PostgreSQL。

這麼做的好處,就是客戶教育成本低,遷移成本低,用自己熟悉的數據庫,又享受了雲端的高可用和高性能。

這些好像沒啥,很“正常”,還不夠“喪心病狂”,但是接下來的幾款數據庫產品,AWS就要開掛了。

RDS-Aurora

雖然說,Aurora是掛在RDS下面的一個數據庫產品,但是我認爲它完全是不一樣的。不能和其它RDS數據庫相提並論。

數據庫的一個核心問題就是解決“高併發”,其中包括:高併發的“讀”,和高併發的“寫”。(比如一個電商平臺的網站,對商品的查詢都是讀,下訂單則都是寫了。)

你可能會說,高併發的“讀”不難處理啊!可多幾個數據部分不就行了?比如,一份數據放在10個服務器上--對於讀,來說,是這樣的。

但是,如果系統裏面有很多數據副本的時候,高併發的“寫”就不能有效的同步到所有的副本上了--所以,高併發的讀寫實際上是一對兒矛盾的綜合體。

Aurora通過“日誌即數據”的概念,把“數據引擎”和“數據存儲”進行了有效的分割,從而達到了空前的高併發讀寫機能。

917

傳統的普通數據庫服務,或者普通的自建數據庫機構,“寫”只能發生在一個“主”數據上,然後“主”再把自己的數據同步給其它副本。Aurora則不同,“寫”可以發生在任何一個可用區上。Aurora的架構使用了3個可用區,每個可用區有2個副本,也就是一共6個副本,這6個副本都可以進行讀寫。極大的彌補了,傳統數據庫對高併發的瓶頸。這是不是很“喪心病狂”?這是如何做到的?!

細節,在這裏就不贅述了,有興趣的話,可以諮詢我們的架構師~

高併發的讀寫是典型的OLTP(On-Line Transaction Processing聯機事務處理過程)中發生的場景。那麼對於OLAP (On-Line Analytical Processing 在線分析過程),AWS提出了什麼產品呢?

Redshift

和OLTP場景下,數據庫需要支持高併發讀寫不同,OLAP場景下數據庫讀寫頻率很低,數據庫需要進行大量的聚合計算:數據量大,計算量也大。(比如,一天結束之後,我們需要對今天的用戶行爲進行分析,所有用戶行爲數據可能是幾個TB。)

這時候,就需要Redshift出場了。Redshift說起來也是關係型數據庫,但是它和RDS們有個本質的不同,它不是按“行”來存儲數據的,而是按“列”來的。不僅如此,它還按照“列”,對數據進行了排序!基本上這就是爲了做“聚合”而誕生的數據庫啊!而且按列聚合的數據庫很方便壓縮,Redshift可以處理PB級數據哦!!!

你說這就可以了吧:傳統的關係型數據庫,AWS有了;OLTP數據庫有了;OLAP數據庫也有了。AWS覺得還不夠!

342

DynamoDB

上面的都是關係型數據庫。DynamoDB是AWS提供的一款“非關係型數據庫”,特別以“鍵值存儲”爲核心。可以高效的進行大數據/大文件的快速讀取。

如果你是手遊行業/醫療行業/影視娛樂行業有大文件需要讀取的話,那麼你有福了。:)

Neptune

關係型數據庫有了,非關係型也有了!還不夠嗎?對於亞馬遜來說,當然不夠!

AWS又推出了“圖數據庫”。在現在這個社交應用(大數據相關性)橫行的年代,沒有圖數據庫,取一個簡單的人際關係,用“關係型數據庫”真是要累死的。舉2個簡單的例子:

1. 我們想知道用戶A和用戶B是幾度好友?如果A和B是直接好友也就罷了,用關係型數據庫Join一次也就行了。但是,萬一是10度好友呢?總不能Join 10次吧。關鍵是,如果不知道是幾度好友,難道要無限的Join下去嗎?

2. 我們的物流系統報告,北京到上海的一趟貨車延遲了,那有多少用戶會受到影響呢?一趟車可能影響10條物流鏈路?影響50個城市?影響2000個用戶?估計我們需要把系統裏面所有的數據都關聯查詢一遍纔能有個結論,成本太高了。

在上面的場景裏面(也就是不斷的大量的Join出現的時候),圖數據庫就是一個利器了。

這都已經好幾款數據庫了,還不夠嗎?AWS覺得還不夠。2018年的時候,它居然同時發佈了兩款新數據庫!!!

我真是要給這家公司跪了。

356

Timestream

顧名思義,Timestream是和時間相關的數據庫。因爲很多對數據的查新都是以時間段爲基礎的。Timestream就是針對這個場景的。

QLDB

QLDB的全稱是Quantum Ledger Database。它的應用場景也很好理解,最適合的場景是“記賬本”。“賬本”是不能被更改的,每一筆記錄都不能被改動,被忠實的記錄下來,已被查詢。QLDB就應運而生了。是不是有點兒“區塊鏈”的意思?只不過QLDB是有中心的。

255

說了這麼多~,說到底,AWS的“喪心病狂”,源自於它“對客戶的癡迷”,亞馬遜絞盡腦汁,把所有用戶能提出的業務場景都想到了,無論我們有什麼業務需求都可以用某款數據庫解決。


轉自:光環雲極客簡書博客


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章