術語表

請注意:本術語表的定義刻意保持簡短,旨在傳達核心概念,而非覆蓋術語的全部細節。更多內容請參閱正文對應章節。

非同步(asynchronous)

不等待某件事完成(例如透過網路把資料傳送到另一個節點),且不假設它會在多長時間內完成。參見“同步與非同步複製”、“同步網路與非同步網路”和“系統模型與現實”。

原子(atomic)

  1. 在併發語境下:指一個操作看起來在某個單一時刻生效,其他併發程序不會看到它處於“半完成”狀態。另見 isolation
  2. 在事務語境下:指一組寫入要麼全部提交、要麼全部回滾,即使發生故障也不例外。參見“原子性”和“兩階段提交(2PC)”。

背壓(backpressure)

當接收方跟不上時,強制傳送方降速。也稱為 flow control。參見“系統過載後無法恢復時會發生什麼”。

批處理(batch process)

以一個固定(通常較大)資料集為輸入、產出另一份資料且不修改輸入的計算。參見第 11 章

有界(bounded)

具有已知上限或大小。例如可用於描述網路延遲(參見“超時與無界延遲”)和資料集(參見第 12 章導言)。

拜占庭故障(Byzantine fault)

節點以任意錯誤方式行為,例如向不同節點發送相互矛盾或惡意訊息。參見“拜占庭故障”。

快取(cache)

透過記住近期訪問資料來加速後續讀取的元件。快取通常不完整:若未命中,需要回源到更慢但完整的底層資料儲存。

CAP 定理(CAP theorem)

一個在實踐中經常被誤解、且不太有直接指導價值的理論結果。參見“CAP 定理”。

因果關係(causality)

當一件事“先於”另一件事發生時產生的事件依賴關係。例如後續事件對先前事件的響應、建立在先前事件之上,或必須結合先前事件理解。參見“happens-before 關係與併發”。

共識(consensus)

分散式計算中的基本問題:讓多個節點就某件事達成一致(例如誰是主節點)。這比直覺上要困難得多。參見“共識”。

資料倉庫(data warehouse)

將多個 OLTP 系統的資料彙總並整理後,用於分析場景的資料庫。參見“資料倉庫”。

宣告式(declarative)

描述“想要什麼性質”,而非“如何一步步實現”。在資料庫查詢中,最佳化器接收宣告式查詢並決定最佳執行方式。參見“術語:宣告式查詢語言”。

反正規化(denormalize)

在已正規化資料集中引入一定冗餘(常見形式為快取或索引)以換取更快讀取。反正規化值可看作預計算結果,類似物化檢視。參見“正規化、反正規化與連線”。

派生資料(derived data)

透過可重複流程由其他資料生成的資料集,必要時可重新計算。通常用於加速某類讀取。索引、快取、物化檢視都屬於派生資料。參見“記錄系統與派生資料”。

確定性(deterministic)

一個函式在相同輸入下總產生相同輸出,不依賴隨機數、當前時間、網路互動等不可預測因素。參見“確定性的力量”。

分散式(distributed)

系統在多個透過網路連線的節點上執行。其典型特徵是 部分失效:一部分壞了,另一部分仍在工作,而軟體往往難以精確知道哪裡壞了。參見“故障與部分失效”。

永續性(durable)

以你相信不會丟失的方式儲存資料,即使發生各種故障。參見“永續性”。

ETL

Extract-Transform-Load(提取-轉換-載入):從源資料庫抽取資料,轉成更適合分析查詢的形式,再載入到資料倉庫或批處理系統。參見“資料倉庫”。

故障切換(failover)

在單主系統中,將主角色從一個節點切到另一個節點的過程。參見“處理節點故障”。

容錯(fault-tolerant)

出現故障(如機器崩潰、鏈路故障)後仍可自動恢復。參見“可靠性與容錯”。

流量控制(flow control)

backpressure

追隨者(follower)

不直接接收客戶端寫入、僅應用來自主節點變更的副本。也稱 secondaryread replicahot standby。參見“單主複製”。

全文檢索(full-text search)

按任意關鍵詞搜尋文字,通常支援近似拼寫、同義詞等能力。全文索引是支援此類查詢的一種 secondary index。參見“全文檢索”。

圖(graph)

vertices(可引用物件,也稱 nodesentities)和 edges(頂點間連線,也稱 relationshipsarcs)組成的資料結構。參見“圖狀資料模型”。

雜湊(hash)

把輸入對映成看似隨機數字的函式。相同輸入總得相同輸出;不同輸入通常輸出不同,但也可能碰撞(collision)。參見“按鍵的雜湊分片”。

冪等(idempotent)

可安全重試的操作:執行多次與執行一次效果相同。參見“冪等性”。

索引(index)

一種可高效檢索“某欄位取某值”的記錄的資料結構。參見“OLTP 的儲存與索引”。

隔離性(isolation)

在事務語境下,併發事務相互干擾的程度。Serializable 最強,也常用更弱隔離級別。參見“隔離性”。

連線(join)

把具有關聯關係的記錄拼在一起。常見於一個記錄引用另一個記錄(外部索引鍵、文件引用、圖邊)時,查詢需要取到被引用物件。參見“正規化、反正規化與連線”和“JOIN 與 GROUP BY”。

領導者(leader)

當資料或服務跨多個節點複製時,被指定為可接受寫入的副本。可透過協議選舉或管理員指定。也稱 primarysource。參見“單主複製”。

線性一致(linearizable)

表現得像系統裡只有一份資料副本,且由原子操作更新。參見“線性一致性”。

區域性(locality)

一種效能最佳化:把經常被一起訪問的資料放在一起。參見“讀寫的資料區域性”。

鎖(lock)

保證同一時刻只有一個執行緒/節點/事務訪問某資源的機制;其他訪問者需等待鎖釋放。參見“兩階段鎖(2PL)”和“分散式鎖與租約”。

日誌(log)

只追加寫入的資料檔案。WAL 用於崩潰恢復(參見“讓 B 樹可靠”);log-structured 儲存把日誌作為主儲存格式(參見“日誌結構儲存”);replication log 用於主從複製(參見“單主複製”);event log 可表示資料流(參見“基於日誌的訊息代理 ”)。

物化(materialize)

把計算結果提前算出並寫下來,而不是按需即時計算。參見“事件溯源與 CQRS”。

節點(node)

執行在某臺計算機上的軟體例項,透過網路與其他節點協作完成任務。

正規化(normalized)

資料結構中儘量避免冗餘與重複。正規化資料庫裡某資料變化時通常只改一處,不需多處同步。參見“正規化、反正規化與連線”。

OLAP

Online Analytic Processing(線上分析處理):典型訪問模式是對大量記錄做聚合(如 count/sum/avg)。參見“事務系統與分析系統”。

OLTP

Online Transaction Processing(線上事務處理):典型訪問模式是快速讀寫少量記錄,通常按鍵索引。參見“事務系統與分析系統”。

分片(sharding)

把單機裝不下的大資料集或計算拆成更小部分並分散到多臺機器上。也稱 partitioning。參見第 7 章

百分位(percentile)

透過統計多少值高於/低於某閾值來描述分佈。例如某時段 95 分位響應時間為 t,表示 95% 請求耗時小於 t,5% 更長。參見“描述效能”。

主鍵(primary key)

唯一標識一條記錄的值(通常為數字或字串)。在很多應用中由系統在建立時生成(順序或隨機),而非使用者手工指定。另見 secondary index

法定票數(quorum)

一個操作被判定成功前所需的最少投票節點數。參見“讀寫法定票數”。

再平衡(rebalance)

為均衡負載,把資料或服務從一個節點遷移到另一個節點。參見“鍵值資料的分片”。

複製(replication)

在多個節點(replicas)上儲存同一份資料,以便部分節點不可達時仍可訪問。參見第 6 章

模式(schema)

對資料結構(欄位、型別等)的描述。資料是否符合模式可在生命週期不同階段檢查(參見“文件模型中的模式靈活性”),模式也可隨時間演進(參見第 5 章)。

二級索引(secondary index)

與主儲存並行維護的附加結構,用於高效檢索滿足某類條件的記錄。參見“多列索引與二級索引”和“分片與二級索引”。

可序列化(serializable)

一種 isolation 保證:多個事務併發執行時,行為等價於某個序列順序逐個執行。參見“可序列化”。

無共享(shared-nothing)

一種架構:獨立節點(各自 CPU、記憶體、磁碟)透過普通網路連線;相對的是共享記憶體或共享磁碟架構。參見“共享記憶體、共享磁碟與無共享架構”。

偏斜(skew)

  1. 分片負載不均:某些分片請求/資料很多,另一些很少。也稱 hot spots。參見“負載偏斜與熱點消除”。
  2. 一種時序異常,導致事件呈現為非預期的非順序。參見“快照隔離與可重複讀”中的讀偏斜、“寫偏斜與幻讀”中的寫偏斜、以及“用於事件排序的時間戳”中的時鐘偏斜。

腦裂(split brain)

兩個節點同時認為自己是領導者,可能破壞系統保證。參見“處理節點故障”和“少數服從多數”。

儲存過程(stored procedure)

把事務邏輯編碼到資料庫伺服器端執行,使事務過程中無需與客戶端來回通訊。參見“實際序列執行”。

流處理(stream process)

持續執行的計算:消費無窮事件流併產出結果。參見第 12 章

同步(synchronous)

asynchronous 的反義詞。

記錄系統(system of record)

持有某類資料主權威版本的系統,也稱 source of truth。資料變更首先寫入這裡,其他資料集可由其派生。參見“記錄系統與派生資料”。

超時(timeout)

最簡單的故障檢測方式之一:在一定時間內未收到響應即判定超時。但無法確定是遠端節點故障還是網路問題導致。參見“超時與無界延遲”。

全序(total order)

一種可比較關係(如時間戳),任意兩者都能判定大小。若存在不可比較元素,則稱 partial order(偏序)。

事務(transaction)

把多次讀寫封裝為一個邏輯單元,以簡化錯誤處理與併發問題。參見第 8 章

兩階段提交(two-phase commit, 2PC)

保證多個數據庫節點對同一事務要麼都 atomically 提交、要麼都中止的演算法。參見“兩階段提交(2PC)”。

兩階段鎖(two-phase locking, 2PL)

實現 serializable isolation 的演算法:事務對讀寫資料加鎖並持有到事務結束。參見“兩階段鎖(2PL)”。

無界(unbounded)

沒有已知上限或大小。與 bounded 相反。

最後更新於