[ 收藏 ] [ 简体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

     经部  史类  子部  集部  古籍管理  古籍工具书  四库全书  古籍善本影音本  中国藏书
  •  文化

     文化评述  文化随笔  文化理论  传统文化  世界各国文化  文化史  地域文化  神秘文化  文化研究  民俗文化  文化产业  民族文化  书的起源/书店  非物质文化遗产  文化事业  文化交流  比较文化学
  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

     执业资格考试用书  室内设计/装潢装修  标准/规范  建筑科学  建筑外观设计  建筑施工与监理  城乡规划/市政工程  园林景观/环境艺术  工程经济与管理  建筑史与建筑文化  建筑教材/教辅  英文原版书-建筑
  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

     园艺  植物保护  畜牧/狩猎/蚕/蜂  林业  动物医学  农作物  农学(农艺学)  水产/渔业  农业工程  农业基础科学  农林音像
  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

  •  保健/养生

  •  体育/运动

  •  手工/DIY

  •  休闲/爱好

  •  英文原版书

  •  港台图书

  •  研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学

  •  音乐
     音乐理论

     声乐  通俗音乐  音乐欣赏  钢琴  二胡  小提琴
  • 數據庫繫統內幕
    該商品所屬分類:計算機/網絡 -> 數據庫
    【市場價】
    588-854
    【優惠價】
    368-534
    【作者】 Alex 
    【所屬類別】 圖書  計算機/網絡  數據庫  數據庫理論 
    【出版社】機械工業出版社 
    【ISBN】9787111655169
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787111655169
    作者:Alex

    出版社:機械工業出版社
    出版時間:2020年05月 

        
        
    "

    產品特色

    編輯推薦

    本書從數據庫開發者角度,對現代數據庫技術進行了全景式解讀,完全不拘泥於任何一款數據庫繫統,也不偏袒任何一種數據庫的類型或特性。這本書隻會討論現代數據庫必不可少的那些東西,例如存儲格式、索引數據結構、數據一致性等,以及相關的許多選項與權衡。*部分從單機的角度,介紹磁盤存儲格式、索引數據結構、事務處理等,第二部分則以分布式繫統切入,講解分布式數據庫的多副本、分布式事務、一致性等問題。書中內容的選材緊跟業內前沿進展,不僅有提及各種新興的數據庫產品,還有涉及許多來自學術界前沿的研究成果。不論你是一名有志於從事雲計算領域的開發者,深入的研究數據庫繫統的設計與實現,還是作為一名開發者,即將使用雲數據庫以及雲原生數據庫,閱讀本書都會大有裨益。

     
    內容簡介

    本書旨在指導開發者理解現代數據庫和存儲引擎背後的內部概念,包含從眾多書籍、論文、博客和多個開源數據庫源代碼中精心選取的相關材料。本書深入介紹了數據存儲、數據構建塊、分布式繫統和數據集群,並且指出了現代數據庫之間*重要的區別在於決定存儲結構和數據分布的子繫統。本書分為兩部分:*部分討論節點本地的進程,並關注數據庫繫統的核心組件——存儲引擎,以及*重要的一素;第二部分探討如何將多個節點組織到一個數據庫集群中。本書主要面向數據庫開發人員,以及使用數據庫繫統構建軟件的人員,如軟件開發人員、運維工程師、架構師和工程技術經理。


     

    作者簡介

    作者簡介


    Alex Petrov是一位數據基礎架構工程師,數據庫和存儲繫統的狂熱愛好者,Apache Cassandra 提交者和PMC成員,精通存儲、分布式繫統和算法。



    譯者簡介


    黃鵬程 畢業於北京郵電大學,過去八年一直專注於數據庫和大數據平臺研發與架構工作。畢業後就職於中國民生銀行,歷任軟件工程師及大數據基礎架構團隊負責人,目前為阿裡雲高級產品專家,負責阿裡雲數據庫相關產品的設計與規劃工作。你可以通過搜索“gnuhpc”在LinkedIn或者微信上找到他。


     


    傅宇 畢業於南京大學計算機繫,專注於數據庫技術,現任阿裡雲技術專家,擔任 PolarDB-X 分布式關繫型數據庫內核研發工作,在分布式事務、查詢優化器、執行器等方向略有經驗,對數據庫和大數據領域充滿熱情。個人博客:https://ericfu.me,知乎賬號 Eric Fu,歡迎與我交流!


     


    張晨 畢業於上海交通大學。大數據、數據庫、分布式繫統和函數式編程愛好者。現於Indeed東京擔任軟件工程師一職。你可以通過 我的個人主頁chasezhang.me了解更多信息。

    目錄
    前言 1
    部分 存儲引擎
    第1章 簡介與概述 13
    1.1 數據庫架構 14
    1.2 內存數據庫與磁盤數據庫 16
    1.3 面向列與面向行的數據庫 17
    1.3.1 面向行的數據布局 18
    1.3.2 面向列的數據布局 19
    1.3.3 區別與優化 20
    1.3.4 寬列式存儲 20
    1.4 數據文件和索引文件 21
    1.4.1 數據文件 22
    1.4.2 索引文件 23
    1.4.3 間接的主索引 24

    前言 1


    部分 存儲引擎


    第1章 簡介與概述 13


    1.1 數據庫架構 14


    1.2 內存數據庫與磁盤數據庫 16


    1.3 面向列與面向行的數據庫 17


    1.3.1 面向行的數據布局 18


    1.3.2 面向列的數據布局 19


    1.3.3 區別與優化 20


    1.3.4 寬列式存儲 20


    1.4 數據文件和索引文件 21


    1.4.1 數據文件 22


    1.4.2 索引文件 23


    1.4.3 間接的主索引 24


    1.5 緩衝、不可變性和有序性 25


    1.6 本章小結 26


    第2章 B樹基礎知識 28


    2.1 二分搜索樹 28


    2.1.1 樹的平衡 29


    2.1.2 基於磁盤存儲的樹 31


    2.2 基於磁盤的結構 32


    2.2.1 機械硬盤 32


    2.2.2 固態硬盤 32


    2.2.3 磁盤存儲結構 34


    2.3 無處不在的B樹 35


    2.3.1 B樹的層次結構 36


    2.3.2 分隔鍵 38


    2.3.3 B樹查找復雜度 39


    2.3.4 B樹查找算法 39


    2.3.5 鍵的數目 40


    2.3.6 B樹的節點分裂 40


    2.3.7 B樹的節點合並 42


    2.4 本章小結 43


    第3章 文件格式 45


    3.1 動機 45


    3.2 二進制編碼 46


    3.2.1 原始類型 46


    3.2.2 字符串和變長數據 48


    3.2.3 按位打包的數據:布爾值、枚舉值和標志 48


    3.3 通用原理 49


    3.4 頁的結構 51


    3.5 分槽頁 51


    3.格布局 53


    3.7格放進分槽頁 54


    3.8 管理變長數據 55


    3.9 版本 56


    3.10 校驗和 57


    3.11 本章小結 58


    第4章 B樹的實現 59


    4.1 頁頭 59


    4.1.1 魔數 59


    4.1.2 同級指針 60


    4.1.3 右指針 60


    4.1.4 節點的高鍵 61


    4.1.5 溢出頁 62


    4.2 二分搜索 64


    4.3 傳播分裂與合並 65


    4.4 再平衡 67


    4.5 僅在右側追加 68


    4.6 壓縮 69


    4.7 清掃與維護 70


    4.7.1 更新和刪除導致的碎片 70


    4.7.2 頁的碎片整理 71


    4.8 本章小結 72


    第5章 事務處理與恢復 74


    5.1 緩衝區管理 75


    5.1.1 緩存語義 77


    5.1.2 緩存回收 77


    5.1.3 在緩存中鎖定頁 78


    5.1.4 頁置換 79


    5.2 恢復 82


    5.2.1 日志語義 83


    5.2.2 操作日志與數據日志 84


    5.2.3 steal和force策略 84


    5.2.4 ARIES 85


    5.3 並發控制 86


    5.3.1 可串行化 86


    5.3.2 事務隔離 87


    5.3.3 讀異常和寫異常 88


    5.3.4 隔離級別 88


    5.3.5 樂觀並發控制 90


    5.3.6 多版本並發控制 91


    5.3.7 悲觀並發控制 91


    5.3.8 基於鎖的並發控制 91


    5.4 本章小結 98


    第6章 B樹的變體 101


    6.1 寫時復制 101


    6.2 抽像節點更新 103


    6.3 惰性B樹 103


    6.3.1 WiredTiger 104


    6.3.2 惰性自適應樹 105


    6.4 FD樹 106


    6.4.1 分段級聯 106


    6.4.2 對數級的有序段 108


    6.5 Bw樹 108


    6.5.1 更新鏈 109


    6.5.2 用CAS控制並發 109


    6.5.3 結構修改操作 110


    6.5.4 合並和垃圾收集 111


    6.6 緩存無關B樹 112


    6.7 本章小結 114


    第7章 日志結構存儲 116


    7.1 LSM樹 117


    7.1.1 LSM樹的結構 118


    7.1.2 更新與刪除 122


    7.1.3 LSM樹的查找 123


    7.1.4 合並迭代 124


    7.1.5 協調 126


    7.1.6 LSM樹的維護 126


    7.2 讀寫放大與空間放大 129


    7.3 實現細節 130


    7.3.1 有序字符串表 130


    7.3.2 布隆過濾器 132


    7.3.3 跳表 133


    7.3.4 磁盤訪問 135


    7.3.5 壓縮 136


    7.4 無序LSM存儲 136


    7.4.1 Bitcask 137


    7.4.2 WiscKey 138


    7.5 LSM樹中的並發 139


    7.6 日志堆疊 140


    7.6.1 閃存轉換層 141


    7.6.2 文件繫統日志記錄 142


    7.7 LLAMA與精心堆疊 144


    7.8 本章小結 145


    部分總結 147


    第二部分 分布式繫統


    第8章 簡介與概述 151


    8.1 並發執行 151


    8.2 分布式計算的誤區 153


    8.2.1 處理 154


    8.2.2 時鐘和時間 155


    8.2.3 狀態一致性 156


    8.2.4 本地和遠程執行 157


    8.2.5 處理故障的需要 157


    8.2.6 網絡分區和部分故障 157


    8.2.7 級聯故障 158


    8.3 分布式繫統抽像 160


    8.4 兩將軍問題 165


    8.5 FLP不可能定理 166


    8.6 繫統同步性 167


    8.7 故障模型 167


    8.7.1 崩潰故障 168


    8.7.2 遺漏故障 168


    8.7.3 任意故障 169


    8.7.4 故障處理 169


    8.8 本章小結 169


    第9章 故障檢測 171


    9.1 心跳和ping 172


    9.1.1 無超時的故障檢測器 173


    9.1.2 外包心跳 174


    9.2 phi增量故障檢測器 175


    9.3 Gossip和故障檢測 175


    9.4 反向故障檢測 176


    9.5 本章小結 177


    第10章 領導者選舉 179


    10.1 霸道選舉算法 180


    10.2 依次故障轉移 181


    10.3 候選節點/普通節點優化 182


    10.4 邀請算法 183


    10.5 環算法 184


    10.6 本章小結 185


    第11章 復制和一致性 187


    11.1 實現可用性 188


    11.2 臭名昭著的CAP理論 188


    11.2.1 小心使用CAP 189


    11.2.2 收成與產量 190


    11.3 共享內存 191


    11.4 順序 192


    11.5 一致性模型 193


    11.5.1 嚴格一致性 194


    11.5.2 可線性化 194


    11.5.3 順序一致性 198


    11.5.4 因果一致性 199


    11.6 會話模型 202


    11.7 終一致性 204


    11.8 可調一致性 204


    11.9 見證者副本 206


    11.10 強終一致性和CRDT 207


    11.11 本章小結 209


    第12章 反熵和傳播 212


    12.1 讀修復 213


    12.2 摘要讀 214


    12.3 提示移交 215


    12.4 Merkle樹 215


    12.5 位圖版本向量 216


    12.6 Gossip傳播 218


    12.6.1 Gossip技術細節 219


    12.6.2 覆蓋網絡 219


    12.6.3 混合Gossip 220


    12.6.4 局部視圖 221


    12.7 本章小結 222


    第13章 分布式事務 224


    13.1 多個操作的原子性 225


    13.2 兩階段提交 226


    13.2.1 2PC中的參與者故障 227


    13.2.2 2PC中的協調者故障 228


    13.3 三階段提交 229


    13.4 Calvin分布式事務 231


    13.5 Spanner分布式事務 233


    13.6 數據庫分區 235


    13.7 Percolator分布式事務 236


    13.8 協調避免 238


    13.9 本章小結 240


    第14章 共識 243


    14.1 廣播 244


    14.2 原子廣播 245


    14.2.1 虛同步 245


    14.2.2 Zookeeper原子廣播 246


    14.3 Paxos 248


    14.3.1 Paxos算法 249


    14.3.2 Paxos的Quorum 250


    14.3.3 故障場景 251


    14.3.4 Multi-Paxos 253


    14.3.5 快速Paxos 254


    14.3.6 平等Paxos 255


    14.3.7 柔性Paxos 257


    14.3.8 共識的推廣解法 259


    14.4 Raft 261


    14.4.1 Raft中的領導者角色 263


    14.4.2 故障場景 264


    14.5 拜占庭共識 266


    14.5.1 PBFT算法 266


    14.5.2 恢復和檢查點 268


    14.6 本章小結 269


    第二部分總結 272


    參考文獻 275


     

    前言
    分布式數據庫繫統是大多數企業和絕大多數應用程序不可或缺的一部分。這些應用程序提供業務邏輯和用戶界面,而數據庫繫統則負責確保數據的完整性、一致性和冗餘性。
    回到2000年,那時如果你要選擇一個數據庫,則隻有少數幾個選項,而且其中大部分都屬於關繫型數據庫,因此它們之間的差異相對較小。當然,這並不是說所有數據庫都是完全相同的,隻是它們的功能和使用場景都非常相似。
    其中一些數據庫專注於水平擴展(scale out),即通過運行多個數據庫實例(表現得像是一個單一)來提高性能並增加容量,例如:Gamma數據庫機器項目、Teradata、Greenplum、Parallel DB2等。如今,水平擴展仍然是客戶期望的重要的數據庫特性之一,雲服務的日益普及詮釋了這一點。相較於將數據庫遷移至更大型、功能更強大的計算機進行垂直擴展(scale up),啟動一個新實例並將其添加到集群中通常要容易得多。因為遷移可能會耗時冗長且令人痛苦不堪,還可能會導致停機。
    在2010年左右,一類新型的終一致性數據庫開始逐步湧現,並且一些諸如NoSQL、大數據等術語也日益流行。在過去的15年間,開源社區、大型互聯網公司和數據庫供應商構建了眾多的數據庫和工具,以至於當人們在試圖理解它們的使用場景、細節和規範時很容易迷失方向。

    分布式數據庫繫統是大多數企業和絕大多數應用程序不可或缺的一部分。這些應用程序提供業務邏輯和用戶界面,而數據庫繫統則負責確保數據的完整性、一致性和冗餘性。


    回到2000年,那時如果你要選擇一個數據庫,則隻有少數幾個選項,而且其中大部分都屬於關繫型數據庫,因此它們之間的差異相對較小。當然,這並不是說所有數據庫都是完全相同的,隻是它們的功能和使用場景都非常相似。


    其中一些數據庫專注於水平擴展(scale out),即通過運行多個數據庫實例(表現得像是一個單一)來提高性能並增加容量,例如:Gamma數據庫機器項目、Teradata、Greenplum、Parallel DB2等。如今,水平擴展仍然是客戶期望的重要的數據庫特性之一,雲服務的日益普及詮釋了這一點。相較於將數據庫遷移至更大型、功能更強大的計算機進行垂直擴展(scale up),啟動一個新實例並將其添加到集群中通常要容易得多。因為遷移可能會耗時冗長且令人痛苦不堪,還可能會導致停機。


    在2010年左右,一類新型的終一致性數據庫開始逐步湧現,並且一些諸如NoSQL、大數據等術語也日益流行。在過去的15年間,開源社區、大型互聯網公司和數據庫供應商構建了眾多的數據庫和工具,以至於當人們在試圖理解它們的使用場景、細節和規範時很容易迷失方向。


    Amazon團隊於2007年發布的Dynamo論文[DECANDIA07]對數據庫社區產生了相當巨大的影響,在短時間內它便激發出了許多變體和實現。其中突出的是誕生於Facebook的Apache Cassandra、LinkedIn研發的Voldemort,以及由前Akamai工程師研發的Riak。


    如今,該領域再次發生了變化:在鍵值存儲、NoSQL和終一致性數據庫之後,我們開始看到一些可擴展性更強、性能更高的數據庫,它們能夠在保證具有更強一致性的同時執行復雜的查詢。


     


    本書的受眾


    在技術會議的交流中,我經常聽到同樣的問題:“如何更多地了解有關數據庫內部的原理?我甚至不知道從哪裡開始。”關於數據庫繫統的大多數書籍都沒有詳細介紹存儲引擎的實現,並且隻是在較高的層次上介紹了訪問方法,例如B樹。很少有書籍涵蓋較新的概念,例如不同的B樹變體和日志結構存儲(log-structured storage),因此我通常建議直接閱讀論文。


    但是每個讀過論文的人都知道這並不容易:時常缺乏上下文,措辭可能含糊不清,論文之間甚至幾乎根本沒有聯繫,論文本身也不容易找到。本書簡要總結了重要的數據庫繫統概念,並可以為希望深入研究的人們提供指南,也可以為已經熟悉這些概念的人們提供備忘單。


    並非每個人都希望成為數據庫開發者,但是本書也將為使用數據庫繫統構建軟件的人員提供幫助,如:軟件開發者、運維工程師、架構師和工程技術經理。


    如果你的公司依賴於任何基礎架構組件,無論是數據庫、消息隊列、容器平臺還是任務調度器,你都必須通過閱讀項目變更日志(change-log)和郵件列表來與社區保持聯繫、同步項目的進展。理解術語並了解其中的工作原理將使你能夠從這些信息來源中獲取更多信息,並可以更高效地使用工具來進行故障診斷,識別和避免潛在的風險與瓶頸。如果繫統出現了某些問題,那麼對數據庫繫統的工作原理有一個全面和基本的了解將會對你有所幫助。利用這些知識,在面對問題時,你將有能力提出假設、進行驗證、找到根本原因,並將其講解給其他項目成員。


    本書也適合那些具備好奇心的人:喜歡學習一些不急用的知識的人,將空閑時間花在搗鼓一些有趣事情上的人。他們有的自己編寫編譯器,有的編寫自用的操作繫統、文本編輯器、電腦遊戲,有的學習編程語言—他們樂於獲取新知識。


    本書假設讀者具有一些開發後端繫統和以用戶身份使用數據庫繫統的經驗。同時,具備一些不同種類數據結構的知識將有助於更快地吸收書中的知識。


     


    為什麼應該閱讀本書


    我們經常聽到人們用他們實現的概念和算法來描述數據庫繫統:“該數據庫使用Gossip來進行成員資格的傳播”(參見第12章)、“他們已經實現了Dynamo”或“這就像他們在Spanner論文中描述的一樣”(參見第13章)。抑或,如果你正在討論算法和數據結構,那麼你會聽到類似於“ZAB和Raft有很多共同點”(參見第14章)、“Bw樹就像是在日志結構化存儲上實現的B樹一樣”(參見第6章)或“它們使用的是類似於Blink樹中的同級指針”(參見第5章)的描述。


    我們需要使用抽像來討論復雜的概念,但是我們不能在每次開啟一場對話時都討論抽像術語。以白話的形式來掌握這些抽像概念是一個捷徑,這能幫助我們將注意力轉移到其他更高層次的問題上。


    學習基本概念、證明和算法的一個優點是它們永不過時。當然,總會有新的東西出現,但是新算法往往是在發現經典算法的缺陷或改進空間之後纔被創造出來的。了解歷史有助於更好地理解這些算法之間的差異和它們的發明動機。


    學習這些內容是鼓舞人心的。你將看到各種各樣的算法,了解我們的工業界是如何一個接一個地解決問題的,並開始欣賞數據繫統。同時,學習這些是有回報的:你幾乎可以感覺到多個拼圖碎片在腦海中移動到一起,終形成一幅完整的圖畫,並且你將總是能夠與他人分享這幅圖畫。


     


    本書的範疇


    本書既不是關於關繫型數據庫的書,也不是關於NoSQL的書,而是關於在各種數據庫繫統中使用的算法和概念的書,且重點是存儲引擎和負責數據分布的組件。


    諸如查詢計劃、查詢優化、調度、關繫模型等概念,在一些優秀的數據庫繫統教科書中已均有涉及。這些概念中的一部分通常是從用戶的角度進行描述的,而本書則著重於內部結構。你可以在第二部分的總結和每章的小結中找到一些有用文獻的推薦。這些文獻應該能回答很多與數據庫相關的問題。


    由於本書中提到的數據庫繫統之間沒有一種通用的查詢語言,所以本書將不討論查詢語言。


    為了收集本書的材料,我研究了15本書、300多篇論文、無數的博客文章、源代碼以及幾個開源數據庫的文檔。對於是否要在書中包含某個特定概念的原則,我常常會問自己這樣一個問題:“數據庫工業界和學術界的人都在談論這個概念嗎?”如果答案是“是”,我便會將該概念添加到一個長長的討論清單裡。


     


    本書的結構


    市面上有一些支持可插撥組件的可擴展數據庫的例子(例如[SCHWARZ86]),但它們較為少見。與此同時,數據庫使用可插撥存儲的例子卻頗多。類似地,我們很少聽到數據庫供應商談論查詢的執行,但他們卻非常熱衷於討論其數據庫是如何保證一致性的。


    數據庫繫統之間顯著的區別集中在兩個方面:如何存儲和分布數據(其他子繫統有時也很重要,但這裡不作介紹)。本書分為兩部分,討論了負責數據存儲(部分)和數據分布(第二部分)的子繫統和組件。


    部分討論節點本地的進程,並關注存儲引擎,它是數據庫繫統的核心組件以及重要的一素。首先,我們從數據庫管理繫統的架構開始介紹,並提出幾種基於主存介質和布局來對數據庫繫統進行分類的方法。隨後,我們將介紹存儲結構,並學習基於磁盤的存儲結構與基於內存的存儲結構之間的區別。然後介紹B樹以及在磁盤上高效維護B樹結構的算法,包括序列化、頁布局以及磁盤存儲形式。再之後,我們會討論B樹的一些變體,以說明上述概念的作用以及受B樹所影響和啟發的數據結構的多樣性。後,我們將討論日志結構存儲的幾種變體(它們通常用於實現文件和存儲繫統),並介紹日志結構存儲的起源以及使用它們的原因。


    第二部分介紹如何將多個節點組織到一個數據庫集群中。我們從構建具備容錯性的分布式繫統理論開始,進而討論分布式繫統與單節點應用程序有何不同,以及我們在分布式環境中面臨的問題、約束和復雜性。之後,我們將深入研究分布式算法。其中,我們從故障檢測算法入手,這些算法通過檢測和報告故障並排除故障節點的方式來提高繫統整體的性能和穩定性。由於本書稍後討論的許多算法都依賴於集群領導權這個概念,所以我們將介紹幾種領導者選舉算法,並討論它們的使用範圍。分布式繫統中困難的事情之一就是要保證數據一致性,因此我們將討論復制的概念,緊接著討論一致性模型、副本之間可能存在的差異以及終一致性。由於終一致性繫統有時會依賴於反熵進行收斂,並依靠Gossip來進行數據分發,所以我們會討論幾種反熵和Gossip方法。後,我們討論數據庫事務上下文中的邏輯一致性,並以共識算法結尾。


    如果沒有書中提到的這些研究和出版物,我是不可能完成本書的。在本書中,方括號代表參考文獻的索引,例如[DECANDIA07]。你可以使用這些參考資料來更詳細地了解有關概念。


    在每章後的小結中都包含與該章內容相關的進一步研究的材料。


     


    本書約定


    本書使用了下述約定。


    楷體


    表示新術語。


    斜體(Italic)


    表示URL、電子郵件地址、文件名和文件擴展名。


    等寬字體(Constant width)


    用於程序清單,以及段落中引用素,例如變量或函數名、數據庫、數據類型、環境變量、語句和關鍵詞。


    這個圖標表示提示或建議。


    這個圖標表示一般性說明。


     這個圖標表示警告或提醒。


     


    示例代碼


    寫作本書的目的是幫助你完成工作,而書中的示例代碼則是為了幫助你更好地理解本書的內容。通常,可以在程序或文檔中使用本書中的代碼,而不需要聯繫O扲eilly獲得許可,除非需要大段地復制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發布O扲eilly的配套CD-ROM則需要獲得許可。引用本書的示例代碼來回答一個問題也不需要許可,將本書中的示例代碼的很大一部分放到自己的產品文檔中則需要獲得許可。


    我們希望(但不強制)讀者在使用本書代碼時注明出處。出處的形式包含標題、作者、出版社和ISBN,例如:


    Database Internals,作者Alex Petrov,由O扲eilly出版,書號978-1-492-04034-7


    如果讀者覺得對示例代碼的使用超出了上面所給出的許可範圍,歡迎通過permission@oreilly.com聯繫我們。


    O'Reilly在線學習平臺(O'Reilly Online Learning)


    近40年來,O'Reilly Media致力於提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。


    我們擁有獨一無二的專家和革新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O扲eilly的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O扲eilly和200多家其他出版商提供的大量文本和視頻資源。有關的更多信息,請訪問http://oreilly.com。


     


    聯繫方式


    對於本書,如果有任何意見或疑問,請按照以下地址聯繫本書出版商。


    美國:


    O'Reilly Media,Inc.


    1005 Gravenstein Highway North


    Sebastopol,CA 95472


    中國:


    北京市西城區西直門南大街2號成銘大廈C座807室(100035)


    奧萊利技術咨詢(北京)有限公司


    本書配套網站(http://bit.ly/database-internals)列出了勘誤表、示例以及其他信息。


    要詢問技術問題或對本書提出建議,請發送電子郵件至bookquestions@oreilly.com。


    關於書籍、課程、會議和新聞的更多信息,請訪問我們的網站:


    http://www.oreilly.com


    http://www.oreilly.com.cn


    我們在Facebook上的地址:http://facebook.com/oreilly


    我們在Twitter上的地址:http://twitter.com/oreillymedia


    我們在YouTube上的地址:http://www.youtube.com/oreillymedia


     


    致謝


    如果沒有數以百計的人辛勤撰寫相關研究論文和書籍,本書就不可能出版。這些論文和書籍是分布式數據繫統思想的源泉,亦是這些思想的參考物,更是本書的參考來源。


    我想對所有審閱本書手稿並提供反饋的人表示謝意,是你們確保了書中內容與措辭的正確性:Dmitry Alimov、Peter Alvaro、Carlos Baquero、Jason Brown、Blake Eggleston、Marcus Eriksson、Francisco Fernández Casta、Joel Knighton、Eugene Lazin、Nate McCall、Christopher Meiklejohn、Tyler Neely、Maxim Neverov、Marina Petrova、Stefan Podkowinski、Edward Ribiero、Denis Rytsov、Kir Shatrov、Alex Sorokoumov、Massimiliano Tomassi及Ariel Weisberg。


    當然,如果沒有家人的支持,本書是不可能完成的,感謝我的妻子Marina和我的女兒Alexandra。這一路走來的每一步,她們都一直在支持我。

    媒體評論
    “本書全面介紹了數據庫繫統領域的各種知識,譬如存儲引擎、存儲文件繫統、分布式理論和算法,可以幫助你快速全面了解相關的知識。本書是開發工程師、運維工程師、存儲工程師深入了解數據庫繫統的***書籍。”
    ——付磊,快手資深數據庫工程師

    “本書從底層原理層面剖析了存儲和分布式的技術細節,能讓你更好地認知數據庫底層繫統。”
    ——樓江航,阿裡雲數據庫高級技術專家 canal、otter作者

    “本書選取數據存儲和分布式理論兩大現代數據庫的重要組成部分,帶領讀者走進數據庫的核心地帶,詳細剖析了它們的工作原理及內部運行機制,是一本數據庫開發和運維人員深入理解數據庫原理不可多得的優秀書籍。”

    “本書全面介紹了數據庫繫統領域的各種知識,譬如存儲引擎、存儲文件繫統、分布式理論和算法,可以幫助你快速全面了解相關的知識。本書是開發工程師、運維工程師、存儲工程師深入了解數據庫繫統的***書籍。”


    ——付磊,快手資深數據庫工程師


     


    “本書從底層原理層面剖析了存儲和分布式的技術細節,能讓你更好地認知數據庫底層繫統。”


    ——樓江航,阿裡雲數據庫高級技術專家 canal、otter作者


     


    “本書選取數據存儲和分布式理論兩大現代數據庫的重要組成部分,帶領讀者走進數據庫的核心地帶,詳細剖析了它們的工作原理及內部運行機制,是一本數據庫開發和運維人員深入理解數據庫原理不可多得的優秀書籍。”


    ——牛新莊,中國郵政儲蓄銀行首席信息官


     


    “數據庫是計算機*核心的基礎軟件之一,本書繫統地介紹了數據庫存儲引擎與分布式繫統知識,詳細地介紹了數據庫常見內部存儲實現結構與分布式算法,能幫助讀者掌握數據庫實現的原理。”


    ——葉正盛,阿裡雲數據庫資深專家









     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部