在上一篇的筆記之中,我們討論了數據模型和查詢語言。在第三章之中我們來聊一聊不同的數據引擎內部是如何實現存儲和檢索的,以及不同設計之間的折中與妥協。 1.鍵值對數據庫 鍵值對數據庫是數據庫形式之中最簡單的一種模式,我們可以把它簡化的實現為下面兩個函數: 底層存儲格式也十分簡單:一個 ...
上一篇聊了聊構建分布式系統所面臨的困難,這篇將着重討論構建容錯分布式系統的算法與協議。構建容錯系統的最佳方法是使用通用抽象,允許應用程序忽略分布式系統中的一些問題。本篇我們先聊一聊線性一致性,以及與線性一致性有關的技術,后續需要了解的分布式協調服務,如:ZooKeeper等,都是基於分布式系統的線性一致性。 .更強的一致性 大多數分布式數據庫至少提供了最終一致性,這意味着如果停止對數據庫的寫操作 ...
2018-02-19 12:19 0 1297 推薦指數:
在上一篇的筆記之中,我們討論了數據模型和查詢語言。在第三章之中我們來聊一聊不同的數據引擎內部是如何實現存儲和檢索的,以及不同設計之間的折中與妥協。 1.鍵值對數據庫 鍵值對數據庫是數據庫形式之中最簡單的一種模式,我們可以把它簡化的實現為下面兩個函數: 底層存儲格式也十分簡單:一個 ...
坦白說也是機緣巧合,在碩士生階段進入分布式系統領域學習。無論是大規模存儲或計算,其核心也是運用分布式技術利用並行性來解決數據密集型應用的需求。最近開始在啃這本《Designing Data-Intensive Applications》大部頭,作者Martin Kleppmann在分布式數據 ...
數據模型是開發軟件的最重要的部分,因為它們對應用程序有着深遠的影響:不僅是軟件的編寫方式,而且也影響我們如何解決的問題的方式。第二篇讀書筆記,我們聊一聊數據模型的設計。 1.數據模型的分層 作為一個開發者來說,在一個復雜的應用程序中,是存在很多分層模型的,但基本思想還是一樣的:每一層 ...
上一篇聊了聊批處理的缺點,對於無界數據來說,流處理會是更好的選擇,“流”指的是隨着時間的推移逐步增加的數據。消息隊列可以將這些流組織起來,快速的在應用程序中給予反饋。但是消息隊列與傳統的數據庫之 ...
之前的文章大量的內容在和大家探討分布式存儲,接下來的章節進入了分布式計算領域。坦白說,個人之前專業的重心側重於存儲,對許多計算的內容理解可能不是和確切,如果文章中的理解有所不妥,願虛心賜教。本篇 ...
下面是這本書序言中的大部分內容,本人的英文水平有限,有理解不到位的地方還請大家指教,這算是自己對這本書的讀書筆記和總結。 數據是當今系統設計中許多挑戰的中心,一些難以解決的問題如系統的可擴展性,一致性,可靠性,有效性和可維護性等需要弄清楚。 另外,面對這些琳琅滿目的工具包括關系型數據庫 ...
相對於讀書筆記,本文更像是一篇閱讀大綱,在初步閱讀本書后,尚有許多疑難,借用此大綱,以后溫故而知新 DDIA講了什么 什么是data-intensive 原文這樣定義 Data-intensive applications are pushing the boundaries ...
副本一致性 現代的數據庫系統來說,幾乎都具備了復制機制replication,這種設計方式至少能對系統帶來兩個好處: 多副本容災:只要存在一個可用數據副本,數據就能夠恢復 讀性能水平擴展:通過分布到不同的機器上,同一份數據能夠在多個節點上同時供外部訪問 保證多副本的數據一致性 ...