文档教程【免费下载链接】ddia《Designing Data-Intensive Application》DDIA 第一版 / 第二版 中文翻译项目地址https://gitcode.com/gh_mirrors/dd/ddia点击查看免费下载本指南以《Designing Data-Intensive Applications》DDIA第二版繁體中文譯本倉庫中的 content/tw/part-iii.md 卷首頁為骨架系統講解「派生資料Derived Data」這一全書收束主題如何把多個異構資料系統整合為一致的應用架構。讀完本文你將掌握記錄系統System of record與派生資料系統Derived data systems的劃分方法、派生資料的冗餘與反正規化本質並沿著第 1114 章的路線圖理解批處理、流處理與資料整合的完整脈絡。從單庫假設到多系統整合第三部分的定位在本書的 第一部分content/tw/part-i.md 與 第二部分content/tw/part-ii.md 中我們自底向上地把分散式資料庫的所有主要考量都過了一遍從資料在磁碟上的佈局一直到出現故障時分散式系統一致性的侷限。但這一切的討論都假定應用中只使用了一種資料庫。現實世界中的資料系統遠比這複雜大型應用程式經常需要以多種方式訪問和處理資料沒有一個資料庫能同時滿足所有不同的需求因此應用通常組合使用多種元件資料儲存、索引、快取、分析系統等等元件之間還需要實作「在這些元件中移動資料」的機制。軟體供應商往往忽視這方面的生態建設聲稱單一產品能滿足你的所有需求但真實世界裡整合不同的系統是實際應用中最重要的事情之一。第三部分Part III正是研究將多個可能擁有不同資料模型、並針對不同訪問模式最佳化的資料系統整合為一個協調一致的應用架構時會遇到的問題。兩種系統記錄系統與派生資料系統從高層次上看儲存和處理資料的系統可以分為兩大類這兩類的劃分是理解整個第三部分的基石。記錄系統System of record記錄系統也被稱為真相源source of truth持有資料的權威版本。它的特徵是當新的資料進入時例如使用者輸入首先會被記錄在這裡每個事實正正好好表示一次表示通常是正規化的normalized如果其他系統與記錄系統之間存在任何差異那麼記錄系統中的值就是正確的根據定義。派生資料系統Derived data systems派生系統中的資料通常是另一個系統中的現有資料以某種方式進行轉換或處理的結果。它的特徵是可重建性如果丟失派生資料可以從原始來源重新建立典型例子包括快取cache資料在快取中就直接提供服務快取未命中則降級由底層資料庫提供反正規化的值denormalized values、索引indexes與物化檢視materialized views都屬此類在推薦系統中預測彙總資料通常派生自使用者日誌。兩者的對比可以濃縮為下表面向記錄系統System of record派生資料系統Derived data systems角色真相源持有權威版本由其他系統資料轉換、處理而來寫入新資料首先寫入這裡通常只讀由來源驅動更新表示正規化每個事實表示一次反正規化重複已有資訊遺失後無法從別處重建可從原始來源重新建立典型例子使用者輸入落地的資料庫快取、索引、物化檢視、推薦彙總派生資料的本質冗餘、反正規化與性能從技術上講派生資料是冗餘的redundant因為它重複了已有的資訊。但這種冗餘並非浪費——它對於獲得良好的只讀查詢效能通常至關重要。理解派生資料有三個關鍵視角反正規化派生資料通常是反正規化的。記錄系統為了避免更新異常而傾向正規化但這會讓讀取查詢需要大量 join派生資料犧牲寫入一致性換取讀取效率。多視角洞察可以從單個源頭派生出多個不同的資料集使你能從不同的「視角」洞察同一批資料——例如同一份使用者行為日誌既可以派生出推薦彙總也可以派生出營運分析報表。降級路徑以快取為例資料在快取中就可由快取提供服務快取不包含所需資料時則降級由底層資料庫提供。這種「可降級」正是派生系統的典型行為模式。值得注意的是並不是所有系統都在架構中明確區分記錄系統與派生資料系統但這是一種非常有用的區分方式它明確了系統中的資料流——系統的哪一部分具有哪些輸入和哪些輸出以及它們如何相互依賴。透過梳理資料的派生關係可以清楚地理解一個令人困惑的系統架構這也正是貫穿第三部分的中心思想。資料庫只是工具區別在於使用方式一個容易被忽略、但至關重要的結論是大多數資料庫、儲存引擎和查詢語言本質上既不是記錄系統也不是派生系統。資料庫只是一個工具如何使用它取決於你自己。記錄系統與派生資料系統之間的區別不在於工具而在於應用程式中的使用方式。同一套資料庫技術用在不同位置就會扮演不同角色用作新資料的落地點時它是記錄系統用作加速讀取的副本、索引或快取時它就成了派生系統。這種「以用法而非工具定義角色」的視角是判斷任何資料架構的第一步也是後續章節中資料整合設計的出發點。第三部分章節路線圖第三部分共四章主題從「離線處理」逐步推進到「即時處理」與「系統哲學」最後以倫理與社會影響收束全書。第 11 章批處理Batch Processing對應文件content/tw/ch11.md。本章研究例如 MapReduce 這樣面向批處理batch-oriented的資料流系統它們為建設大規模資料系統提供了優秀的工具和思想。核心概念包括線上系統 vs 離線系統線上系統以請求/回應為中心以響應時間為主要效能指標批處理作業則讀取一組輸入資料只讀並從頭生成一組輸出資料輸出由輸入衍生而來。可重建性與容忍人為失誤human fault tolerance如果程式碼引入錯誤導致輸出損壞只要回滾到先前版本的程式碼重新執行即可恢復多數物件儲存與開放表格式支援時間旅行time travel。這是批處理優於「直接修改線上資料庫」的關鍵優勢。Unix 工具的啟示awk、sort、uniq -c、head構成的命令鏈可以在數秒內分析數 GB 日誌是理解分散式批處理的絕佳縮影。技術演進從 Google 2004 年發表的 MapReduce、Hadoop 生態到如今 Spark、Flink 等框架與雲資料倉儲查詢引擎儲存層也正從 HDFS、GlusterFS、CephFS 等分散式檔案系統轉向 S3 之類的物件儲存。第 12 章流處理Stream Processing對應文件content/tw/ch12.md。本章把批處理的思想應用到流式資料data streams中使我們能用更低的延遲完成同樣的任務。核心概念包括有界 vs 無界批處理假設輸入有界大小已知且有限而真實世界中的資料往往無界——只要企業還在經營資料集就永遠不會「完整」流處理正是為此而生的連續處理方式每個事件一發生就立即處理。事件與事件流事件是一個小巧、自包含、不可變的物件記錄某個時刻發生的某件事通常帶有時間戳相關事件歸入同一個主題topic或流stream。生產者與消費者事件由生產者釋出者生成一次之後可能由多個消費者訂閱者處理。訊息傳遞系統與背壓backpressure當生產者傳送速度超過消費者處理速度時系統可以丟棄訊息、快取在佇列中或施加背壓阻塞生產者Unix 管道與 TCP 就是背壓的典型例子。資料庫與流第 12 章還研究流與資料庫的關係為第 13 章的「資料整合」主題鋪墊。第 13 章流式系統的哲學A Philosophy of Streaming Systems對應文件content/tw/ch13.md。本章探討如何使用批處理與流處理的工具構建可靠、可伸縮且可維護的應用三個核心小節為資料整合Data integration把第 11、12 章的思想應用於多系統整合的目標分拆資料庫Unbundling databases將資料庫功能拆解為可組合的建構區塊追求正確性Aiming for correctness在分散式、流式環境下如何保證處理結果的正確性。第 14 章做正確的事情Doing the Right Thing對應文件content/tw/ch14.md。本章以倫理、隱私與社會影響為主題為全書收束包含預測分析Predictive analytics資料系統的預測能力及其雙面性隱私與追蹤Privacy and tracking資料收集、使用者的隱私保護與追蹤技術的倫理邊界總結全書觀點的收束與反思。各章小節完整索引第三部分卷首頁提供的完整章節索引如下均已轉換為本倉庫內的相對路徑11. 批處理使用 Unix 工具的批處理分散式系統中的批處理批處理模型批處理用例本章小結參考文獻12. 流處理傳遞事件流資料庫與流流處理本章小結參考文獻13. 流式系統的哲學資料整合分拆資料庫追求正確性本章小結參考文獻14. 做正確的事情預測分析隱私與追蹤總結參考文獻在倉庫中閱讀第三部分本倉庫是 DDIA 第二版的中文翻譯專案第一版位於 content/v1第三部分的內容按語言組織在多個目錄下繁體中文版本即 content/tw簡體中文版本位於 content/zh英文版位於 content/en。各章節文件如 content/tw/ch11.mdcontent/tw/ch14.md採用 Hugo OINK 主題組織配置見 hugo.yaml其中languages.tw.contentDir指向content/tw並支援 HTML、Markdown、llms.txt與整書列印等輸出格式見 hugo.yaml 的outputs配置。建議的閱讀路徑是先讀 content/tw/part-iii.md 建立「記錄系統 vs 派生資料系統」的心智模型再依次深入第 11 章離線、批處理、第 12 章即時、流處理隨後用第 13 章整合兩種思想最後以第 14 章的倫理視角反思整個資料系統的社會影響——這正是全書從「如何建」到「為何建、是否該建」的完整昇華。赞分享文档教程【免费下载链接】ddia《Designing Data-Intensive Application》DDIA 第一版 / 第二版 中文翻译项目地址https://gitcode.com/gh_mirrors/dd/ddia点击查看免费下载相关推荐DDIA 第三部分导读派生数据Derived Data与多系统数据集成架构DDIA 第三部分导读派生数据Derived Data与多系统数据集成架构 《Designing Data Intensive Application》文档教程SQLx数据类型系统与派生宏SQLx数据类型系统与派生宏 SQLx作为Rust生态中强大的SQL工具包其核心特性是提供了完善的类型系统能够在Rust原生类型和不同数据库系统的SQL类型数据库后端Atmosphere持久化会话Redis与SQLite存储方案的实现教程Atmosphere持久化会话Redis与SQLite存储方案的实现教程 Atmosphere作为一款Event Driven WebSockets Fram上一篇从FLARToolKit到JSARToolKitActionScript到JavaScript的AR技术迁移下一篇大模型 LLM 入门完全指南ai-agents-from-zero 讲透预训练、微调与推理的核心逻辑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考