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