
李飛飛 等
本書詳細剖析了作爲核心基礎軟件系統的數據庫在雲計算時代的技術演進歷程,從架構設計、實現機制和系統優化等多個角度闡述傳統數據庫技術是如何一步步發展到雲原生形態的。本書強調理論和實踐的充分結合,分析MySQL、PostgreSQL等工業界“活”的系統實現數據庫的SQL優化與執行、事務處理、緩存與索引等原理,在面對實際應用需求時做了哪些權衡與折中,面對複雜的應用場景如何優化,以及做出種種選擇背後的原因。同時,本書結合阿里雲在數據庫領域的研發實踐經驗,着重講述現代數據庫從系統進化到服務的一系列核心技術原理,例如利用雲計算資源池化技術、分佈式技術實現數據庫的高可用、彈性擴展和按需使用等。 本書內容翔實,兼具理論深度和實現細節,同時開放性地探索了數據庫的最新發展方向,能夠啓發讀者進一步深入思考。本書可作爲高等院校信息類專業的本科生和碩士研究生教材,也可作爲數據庫行業的內核研發和系統運維等從業人員的參考書。
國產雲原生數據庫採用分佈式架構,通過數據的水平拆分以及單一服務的集羣化部署,解決負載均衡、雲原生分佈式數據庫、數據存儲各層面的單點瓶頸問題。具備彈性伸縮特性,可進行數據庫實例以及數據存儲的動態升降配(水平擴展),實現服務能力的靈活選擇。 國產數據庫支持類單機數據庫的賬號權限體系,並且提供IP白名單、高風險SQL默認禁止等實用功能。 1、水平拆分(分庫分表) 國產數據庫通過在不同數據實例上挪動分庫分表,實現數據庫擴容,提升國產數據庫總體訪問量和存儲容量。分佈式關係型數據庫支持hash+key的二級分區策略、多列字段分區,可將特定分區的熱點數據散列爲多個,解決分區熱點問題。 2、平滑擴容 國產數據庫擴容通過增加數據庫實例數,將原有的分庫遷移到新的數據庫實例上,達到擴容的目標,過程中不影響業務正常運行。 3、讀寫分離 國產數據庫的讀寫分離功能是基於只讀實例所做的一種相對透明讀流量切換策略。業務應用不需要修改代碼,可在國產數據庫控制檯中增加只讀實例和調整讀權重,將讀流量按照需要的比例在主實例與多個只讀實例之間調整,寫操作和事務操作則統一走主實例。 4、服務升降配 國產數據庫通過集羣方式部署,由多個服務節點構成一個服務實例,通過負載均衡與DNS對外提供服務。國產數據庫的多個服務節點之間無狀態同步,均衡處理外部請求。當服務集羣的處理能力不足的時候,支持實時增加服務節點,擴展服務能力。服務層資源都利用率比較低的情況下,支持降低集羣規模,降低服務層服務能力,做到服務能力彈性擴展。 5、賬號和權限系統 國產數據庫賬號權限系統支持 GRANT、REVOKE、SHOW GRANTS、CREATE USER、DROP USER、SET PASSWORD 等語句,目前支持庫級和表級權限的授予。 只有管理員賬號具有創建賬號和授權功能,其它賬號只能由管理員賬號創建,其權限只能由管理員賬號授予; 管理員賬號是跟數據庫綁定的,沒有其它數據庫的權限,不能授予其它數據庫的權限給某個賬號。 6、全局唯一數字序列 國產數據庫全局唯一數字序列的主要目標是爲了生成全局唯一的數字序列,通常用於主鍵列、唯一鍵等值的生成。 國產數據庫全局唯一數字序列能夠被隱式使用,在表被創建爲拆分表時,業務應用插入數據後,可以自動填充全局唯一主鍵。 國產數據庫全局唯一數字序列可以被顯式使用,支持單個或批量獲取全局唯一數字序列。 7、秒級監控 國產數據庫支持通過指令秒級監控,配合業務自身監控系統,或者對接第三方開源監控軟件,實現實時監控告警效果。 8、分佈式SQL引擎 國產數據庫支持通過指令秒級監控,配合業務自身監控系統,或者對接第三方開源監控軟件,實現實時監控告警效果。 9、高可用架構 國產數據庫實例由多個國產數據庫Server(服務進程)構成,通過負載均衡設備以單一連接串的方式提供服務。當一個國產數據庫Server出現故障時,流量以秒級切換到其他國產數據庫Server上。整個切換過程對用戶透明,應用代碼無需變更,應用進程無需重啓。 10、表單拆分 國產數據庫支持表單拆分,通過數據分區等操作將表按照指定範圍劃分爲多個數據互不重疊的部分,支持範圍分區表、列表分區表、哈希分區表、結合分區表等方式。
爲了減少網絡I/O,在Aurora中,所有的寫類型只有一種,就是Redo日誌,任何時候都不會寫數據頁。存儲節點接收Redo日誌,基於舊版本數據頁回放日誌,可以得到新版本的數據頁。爲了避免每次都從頭開始回放數據頁變更產生的Redo日誌,存儲節點會定期物化數據頁版本。如圖3-4所示,Aurora由跨AZ的一個主實例和多個副本實例組成,主實例與副本實例或存儲節點間只傳遞Redo日誌和元信息。主實例併發向6個存儲節點和副本實例發送日誌,當4/6的存儲節點應答後,則認爲日誌已經持久化,對於副本實例,則不依賴其應答時間點。
這個是美國那個李飛飛教授寫的書嗎
- 雲原生數據庫 李飛飛 2022.1; 數據庫的SQL優化與執行、事務處理、緩存與索引等原理 複雜應用場景優化 從系統進化到服務的一系列核心技術原理,例如利用雲計算資源池化技術、分佈式技術實現數據庫的高可用、彈性擴展和按需使用等
與阿里的polardb雲原生數據庫有過親密接觸,所以閱讀此書倍感親切,通過努力,完成了單位數據庫的去O嘗試,中間過程可謂艱難,但最終結果是讓人滿意的。
如果想了解數據庫基本原理,以及雲原生時代數據庫特點,學習一些新的design的思想,看看挺好的。介紹原理部分比起國內其他數據庫相關書籍,算是很詳細了。雖然裏面有很多自賣自誇的部分,但確實polarDB 目前基本上是國內做得比較好的雲數據庫產品了。 不過雲原生數據庫畢竟是一個比較新的東西,裏面很多design在實踐中,特別是細節的實現上,感覺是會有很多tricky的部分的,而且在生產環境上的真正效果,還需要時間來檢驗吧
應該加一個副標題:以俺們家polarDB爲模型。基本上就是介紹他家產品的。
以PolarDB爲例(也涉及Aurora,因爲同屬MYSQL生態的緣故),闡述了雲數據的主要實現方法,內容比較充實。推薦。
命中註定遇見你❤️那麼多數據庫的書,就這一本寫了數據庫的發展歷史。喜大苦奔。
拿來當科普讀物還行,不如去看看論文