DDIA - 读书笔记
文章目錄
- 序
- 前言
- 第一部分 數據系統基礎
- DDIA - 第1章 可靠、可擴展與可維護的應用系統
- DDIA - 第2章 數據模型與查詢語言
- DDIA - 第3章 數據存儲與檢索
- DDIA - 第4章 數據編碼與演化
- 第二部分 分布式數據系統
- DDIA - 第5章 數據復制
- DDIA - 第6章 數據分區
- DDIA - 第7章 事務
- DDIA - 第8章 分布式系統的挑戰
- DDIA - 第9章 一致性與共識
- 第三部分 派生數據
- 記錄系統與派生數據系統
- 深入探索常用分布式系統內部機制,學習如何高效運用這些技術
- 分析各種工具的優勢和不足,幫助做出明智的設計決策
- 解析一致性、擴展性、容錯和復雜度之間的權衡利弊
- 介紹分布式系統研究的最新進展(現代數據庫的基石)
- 解釋主流在線服務的基本架構
序
????????數據密集與計算密集是當今兩大典型負載類型,前者以大數據為代表,后者以深度學習和HPC(高性能計算)為主要代表。本書屬于大數據范疇,主要采用分布式系統來處理和存儲數據(涉及數據庫、Hadoop、NoSQL、流處理等),探討三個頂級工程挑戰:系統的可靠性、可擴展性與可維護性。
前言
????????圍繞著如何構建高效存儲與數據處理這一核心主題,幫助大家更好地駕馭處理數據和存儲數據相關技術。 著重探討不同的設計理念以及如何權衡,這些通常才是系統的核心,也會例舉實踐中不同的系統產品最終采用了哪些不同的理念。本書主要關注數據處理架構方面以及如何繼承到數據密集型應用系統中。
????????數據密集型(Data-Intensive): 對于一個應用系統,如果“數據”是其成敗決定性因素,包括數據的規模、數據的復雜度或者數據產生與變化的速率等,我們就可以稱為“數據密集型應用系統”
????????計算密集型(Compute-Intensive): CPU主頻往往是后者最大的制約瓶頸
第一部分 數據系統基礎
????????主要討論有關增強數據密集型應用系統所需的若干基本原則。總結了適合所有數據系統的基本思想,既包括單機運行環境,也包括分布式集群環境。
DDIA - 第1章 可靠、可擴展與可維護的應用系統
DDIA - 第1章 可靠、可擴展與可維護的應用系統介紹相關術語與方法,這些術語等將貫穿于全書。例如重點關注的可靠性、可擴展性與可維護性設計目標,以及達到這些目標的基本方法。
DDIA - 第2章 數據模型與查詢語言
DDIA - 第2章 數據模型與查詢語言對比多種不同的數據模型與查詢語言,從開發者角度來看,這些是不同數據庫系統最顯著的區別,我們也會討論不同模型的具體適用場景。
DDIA - 第3章 數據存儲與檢索
DDIA - 第3章 數據存儲與檢索深入數據庫系統內部的核心存儲引擎,詳細解析數據庫如何設計磁盤布局。針對不同的工作負載如何優化其引擎,而正確的設計選型對系統將產生巨大的影響。
DDIA - 第4章 數據編碼與演化
DDIA - 第4章 數據編碼與演化比較不同的數據編碼格式和序列化技術,特別是當上層應用需求多變而模型也需要靈活調整時,該如何最佳使用這些技術。
第二部分 分布式數據系統
????????我們將從單機的數據存儲轉向跨機器的分布式系統,這是擴展性的重要一步,但隨之而來的是各種挑戰。
????????主要出于以下目的,我們需要在多臺機器上分布數據:
- 擴展性
????????當數據量或者讀寫負載巨大,嚴重超出了單臺機器的處理上限,需要將負載分散到多臺機器上 - 容錯與高可用性
????????當單臺機器(或者多臺,以及網絡甚至整個數據中心)出現故障,還希望應用系統可以繼續工作,這時需要采用多臺機器提供冗余。這樣某些組件失效之后,冗余組件可以迅速接管 - 延遲考慮
????????如果客戶遍布世界各地,通常需要考慮在全球范圍內部署服務,以方便用戶就近訪問最近數據中心所提供的服務,從而避免數據請求跨越了半個地球才能到達目標
系統擴展能力
????????共享內存架構(垂直擴展)和共享磁盤架構提升系統擴展能力是很有限的,分別存在著各種難以解決的問題。
(1)無共享結構(水平擴展)
????????當采用這種架構時,運行數據庫軟件的機器或者虛擬機稱為節點。每個節點獨立使用本地的CPU,內存和磁盤。節點之間的所有協調通信等任務全部運行在傳統網絡(以太網)之上且核心邏輯主要依靠軟件來實現。無共享系統不需要專門的硬件,具有較高的性價比。
(2)復制與分區
????????將數據分布在多節點時有兩種常見的方式:
- 復制
????????在多個節點上保存相同數據的副本,每個副本具體的存儲位置可能不盡相同。復制方法可以提供冗余:如果某些節點發生不可用,則可以通過其他節點繼續提供數據訪問服務。復制也可以幫助提高系統性能 - 分區
????????將一個大塊頭的數據庫拆分成多個較小的子集即分區,不同的分區分配給不同的節點(也稱為分片)
????????這些是不同的數據分布機制,然而它們經常被放在一起組合使用。
DDIA - 第5章 數據復制
DDIA - 第5章 數據復制
DDIA - 第6章 數據分區
DDIA - 第6章 數據分區
DDIA - 第7章 事務
DDIA - 第7章 事務
DDIA - 第8章 分布式系統的挑戰
DDIA - 第8章 分布式系統的挑戰
DDIA - 第9章 一致性與共識
DDIA - 第9章 一致性與共識
第三部分 派生數據
????????主要針對產生派生數據的系統,所謂派生數據主要指在異構系統中,如果無法用一個數據源來解決所有問題,那么一種自然的方式就是集成多個不同的數據庫、緩存模塊以及索引模塊等。
記錄系統與派生數據系統
????????存儲與處理數據的系統按照高層次分類可以分為兩大類:
- 記錄系統
????????一個記錄系統也被稱為真實數據系統,擁有數據的權威版本 - 派生數據系統
????????派生數據系統中的數據則是從另一個系統中獲取已有數據并以某種方式進行轉換或處理的結果
????????大多數數據庫、存儲引擎和查詢語言本身并不屬于記錄系統和派生系統。數據庫只是一個工具:如何使用完全取決于用戶。即記錄系統和派生數據系統之間的區別并不在于工作本身,而是在于如何在應用程序中使用它們。
????????通過弄清楚數據的來龍去脈,來幫助厘清復雜的系統架構。
總結
以上是生活随笔為你收集整理的DDIA - 读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python聪明的尼姆游戏(人机对战)
- 下一篇: 给未来写封信app服务器维护中,App