解讀 NoSQL 解读NoSQL

[美]丹·麥克雷 安·凱利

買這商品的人也買了...

商品描述

 

<內容簡介>

由麥克雷、凱利著的《解讀NoSQL》從NoSQL的相關理論開始,深入淺出地探討了NoSQL核心的架構模式、解決方案和一些高級主題,內容循序漸進,從理論回歸於實踐。
全書分為4個部分。首部分介紹NoSQL的相關理論,如CAP理論、BASE理論、一致性散列演算法等;第二部分介紹NoSQL核心的架構模式—鍵值存儲、圖存儲、列族存儲、文檔存儲;第三部分展現一些常用的NoSQL解決方案,如HA、全文搜索等;後一部分討論NoSQL的一些高級主題,如函數式編程。
全書理論與實踐並重,每章後面還有通俗的案例。對於NoSQL的初學者來說,不失為一本瞭解NoSQL技術全貌的讀物。

 

<章節目錄>

第一部分  瞭解
  第1章  NoSQL:明智的選擇
    1.1  什麼是NoSQL
    1.2  NoSQL的商業驅動
    1.2.1  容量
    1.2.2  速度
    1.2.3  敏捷性
    1.3  NoSQL案例研究
    1.3.1  案例研究:LiveJournal的Memcache技術
    1.3.2  案例研究:Google的MapReduce——利用商用硬件生成搜索索引
    1.3.3  案例研究:Google的Bigtable——一個有著數十億行和百萬列的表
    1.3.4  案例研究:亞馬遜的Dynamo——每天24小時接收訂單
    1.3.5  案例研究:MarkLogic
    1.3.6  實踐
    1.4  小結
  第2章  NoSQL概念
    2.1  保持組件簡單以促進重用
    2.2  將應用分層以簡化設計
    2.3  策略地使用RAM、SSD和磁盤提升性能
    2.4  使用一致性散列演算法維護當前的緩存
    2.5  比較ACID和BASE——兩種可靠的數據庫事務方法
    2.5.1  RDBMS的事務控制——ACID
    2.5.2  非RDBMS的事務控制—BASE
    2.6  通過數據庫分片獲得水平擴展能力
    2.7  基於Brewer的CAP定理進行權衡
    2.8  實踐
    2.9  小結
    2.10  延伸閱讀
第二部分  數據庫模式
  第3章  基礎數據架構模式
    3.1  什麼是數據架構模式
    3.2  理解應用於RDBMS的行存儲設計模式
    3.2.1  行存儲如何工作
    3.2.2  行存儲的演變
    3.2.3  分析行存儲模式的優點和缺點
    3.3  示例:對銷售訂單進行連接操作
    3.4  回顧RDBMS實現的特性
    3.4.1  RDBMS事務
    3.4.2  固定的數據定義語言和強類型的列
    3.4.3  通過RDBMS視圖保證安全並進行訪問控制
    3.4.4  RDBMS的複製和同步
    3.5  通過OLAP、數據倉庫和商業智能系統對歷史數據進行分析
    3.5.1  數據如何從操作型系統流入分析型系統
    3.5.2  熟悉OLAP的概念
    3.5.3  通過匯總生成專項報表
    3.6  將高可用性和以讀為主的系統一體化
    3.7  在修改控制系統和數據同步中使用散列樹
    3.8  實踐
    3.9  小結
    3.1 0延伸閱讀

  第4章  NoSQL數據架構模式
    4.1  鍵值存儲
    4.1.1  什麼是鍵值存儲
    4.1.2  使用鍵值存儲的好處
    4.1.3  使用鍵值存儲
    4.1.4  使用案例:用鍵值存儲保存網頁
    4.1.5  使用案例:亞馬遜簡單存儲服務(S3)
    4.2  圖存儲
    4.2.1  圖存儲概述
    4.2.2  用RDF標準來連接外部數據
    4.2.3  圖存儲的使用案例
    4.3  列族(Bigtable)存儲
    4.3.1  列族存儲基礎
    4.3.2  理解列族存儲的鍵
    4.3.3  列族存儲的優點
    4.3.4  案例研究:在Bigtable中存儲分析信息
    4.3.5  案例研究:Google地圖用Bigtable存儲地理信息
    4.3.6  案例研究:使用列族存儲用戶偏好信息
    4.4  文檔存儲
    4.4.1  文檔存儲基礎
    4.4.2  文檔集合
    4.4.3  應用集合
    4.4.4  文檔存儲的API
    4.4.5  文檔存儲的實現
    4.4.6  案例研究:MongoDB和廣告服務器
    4.4.7  案例研究:大型對象數據庫CouchDB
    4.5  NoSQL架構模式的變體
    4.5.1  定製RAM和SSD存儲
    4.5.2  分佈式存儲
    4.5.3  分組的對象
    4.6  小結
    4.7  延伸閱讀
  第5章  原生XML數據庫
    5.1  什麼是原生XML數據庫
    5.2  用原生XML數據庫構建應用
    5.2.1  加載數據可以像拖曳那樣簡單
    5.2.2  使用集合來組織XML文檔
    5.2.3  使用XPath運用簡單的查詢轉換複雜的數據
    5.2.4  用XQuery轉換數據
    5.2.5  用XQuery更新文檔
    5.2.6  XQuery全文搜索標準
    5.3  在原生XML數據庫中應用XML標準
    5.4  用XML Schema和Schematron設計和驗證數據
    5.4.1  XML Schema
    5.4.2  使用Schematron檢查文檔規則
    5.5  用自定義模塊擴展XQuery
    5.6  案例研究:在美國國務院歷史學家辦公室使用NoSQL
    5.7  案例研究:使用MarkLogic管理金融衍生品
    5.7.1  為什麼RDBMS難以存儲金融衍生品
    5.7.2  一個投資銀行從20個RDBMS轉換到1個原生XML數據庫

    5.7.3  遷移至原生XML文檔存儲的商業好處
    5.7.4  項目成果
    5.8  小結
    5.9  延伸閱讀
第三部分  NoSQL解決方案
  第6章  用NoSQL管理大數據
    6.1  什麼才是大數據解決方案
    6.2  線性擴展數據中心
    6.3  理解線性可擴展性和表現力
    6.4  瞭解大數據問題的類型
    6.5  使用無共享架構分析大數據
    6.6  選擇分佈式模型:主從模型與對等模型
    6.7  在分佈式系統上使用MapReduce處理數據
    6.7.1  MapReduce和分佈式文件系統
    6.7.2  MapReduce怎樣做到高效處理大數據問題
    6.8  NoSQL系統處理大數據問題的4種方式
    6.8.1  分發查詢到數據,而非數據到查詢
    6.8.2  使用散列環在集群中均勻分發數據
    6.8.3  使用複製擴展讀取性能
    6.8.4  使數據庫將查詢均衡地分發到數據節點
    6.9  案例研究:使用ApacheFlume處理事件日誌
    6.9.1  事件日誌數據分析的挑戰
    6.9.2  Apache Flume搜集分佈式事件日誌的方法
    6.9.3  延伸思考
    6.1 0案例研究:電腦輔助發現醫療保險欺詐
    6.1 0.1  什麼是醫療保險欺詐檢測
    6.1 0.2  使用圖和定製的內存共享硬件檢測醫療保險欺詐
    6.1 1小結
    6.1 2延伸閱讀
  第7章  用NoSQL搜索獲取信息
    7.1  什麼是NoSQL搜索
    7.2  搜索分類
    7.2.1  布爾搜索、全文關鍵字搜索和結構化搜索的比較
    7.2.2  測試常見搜索類型
    7.3  提高NoSQL搜索效率的策略和方法
    7.4  使用文檔結構提升搜索質量
    7.5  搜索質量量化
    7.6  本地索引與遠程搜索服務
    7.7  案例研究:使用MapReduce建立倒排索引
    7.8  案例研究:搜索技術文檔
    7.8.1  什麼是技術文檔搜索
    7.8.2  在NoSQL文檔存儲中保留文檔結構
    7.9  案例研究:搜索領域語言—可檢索性和重用性
    7.1 0實踐
    7.1 1小結
    7.1 2延伸閱讀
  第8章  用NoSQL構建高可用的解決方案
    8.1  高可用NoSQL數據庫的定義
    8.2  量化NoSQL數據庫的可用性
    8.2.1  案例研究:亞馬遜S3的服務級別協議

    8.2.2  預測系統可用性
    8.2.3  實踐
    8.3  NoSQL系統的高可用性策略
    8.3.1  使用負載均衡器將流量轉向到最空閑的節點
    8.3.2  結合高可用分佈式文件系統和NoSQL數據庫
    8.3.3  案例研究:將HDFS作為一個高可用的文件系統存儲主數據
    8.3.4  使用托管的NoSQL服務
    8.3.5  案例研究:使用亞馬遜的DynamoDB作為高可用數據存儲
    8.4  案例研究:使用ApacheCassandra作為高可用的列族存儲
    8.4.1  在Cassandra中配置數據和節點間的映射
    8.5  案例研究:使用Couchbase作為高可用文檔數據庫
    8.6  小結
    8.7  延伸閱讀
  第9章  用NoSQL提升敏捷性
    9.1  軟件敏捷性的定義
    9.2  量化敏捷性
    9.3  使用文檔存儲來避免對象關係映射
    9.4  案例研究:使用XRX管理複雜表單
    9.4.1  什麼是複雜業務表單
    9.4.2  用XRX替換客戶端JavaScript和對象關係映射
    9.4.3  理解XRX對敏捷性的影響
    9.5  小結
    9.6  延伸閱讀
第四部分  高級主題
  第10章  NoSQL與函數式編程
    10.1  什麼是函數式編程
    10.1.1  指令式編程就是管理程序狀態
    10.1.2  函數式編程是沒有副作用的並行轉化
    10.1.3  比較指令式編程和函數式編程的擴展性
    10.1.4  使用引用透明避免重複計算
    10.2  案例研究:用NetKernel優化網頁內容組裝
    10.2.1  組裝嵌套內容,追蹤組件依賴
    10.2.2  用NetKernel優化組件再生成
    10.3  函數式編程語言示例
    10.4  完成指令式編程到函數式的編程轉變
    10.4.1  使用函數作為函數的參數
    10.4.2  使用遞歸處理非結構化文檔數據
    10.4.3  使用不可變變量而非可變變量
    10.4.4  去除循環和條件語句
    10.4.5  新的思維方式:從狀態記錄到轉化隔離
    10.4.6  質量、校驗和一致性單元測試
    10.4.7  函數式編程的併發
    10.5  案例研究:用Erlang構建NoSQL系統
    10.6  實踐
    10.7  小結
    10.8  延伸閱讀
  第11章  安全:保護NoSQL系統中的數據
    11.1  NoSQL數據庫的一種安全模型
    11.1.1  使用服務減少數據庫內部的安全性需求
    11.1.2  使用數據倉庫和OLAP減少數據庫內部的安全性需求

    11.1.3  應用級安全措施和數據庫級安全措施的收益總結
    11.2  收集安全需求
    11.2.1  認證
    11.2.2  授權
    11.2.3  審查和日誌記錄
    11.2.4  加密和數字簽名
    11.2.5  保護公開網站免受拒絕服務攻擊和註入攻擊
    11.3  案例研究:鍵值存儲的訪問控制—亞馬遜的S3
    11.3.1  身份和訪問管理(IAM)
    11.3.2  訪問控制列表(ACL)
    11.3.3  桶策略
    11.4  案例研究:在Apache Accumulo中使用鍵可見性技術
    11.5  案例研究:在安全發布流程中使用MarkLogic的RBAC模型
    11.5.1  使用MarkLogic的RBAC安全模型保護文檔
    11.5.2  在安全出版中使用MarkLogic
    11.5.3  MarkLogic的安全模型的優勢
    11.6  小結
    11.7  延伸閱讀
  第12章  選擇合適的NoSQL解決方案
    12.1  什麼是架構利弊分析
    12.2  數據庫架構選型團隊的組成變化
    12.2.1  選擇合適的團隊
    12.2.2  考慮經驗偏好
    12.2.3  僱用外部咨詢師
    12.3  架構權衡分析步驟
    12.4  解構分析:質量樹
    12.4.1  質量屬性樣例
    12.4.2  評估混合架構和雲架構
    12.5  與利益系相關者溝通結果
    12.5.1  用質量樹作為導航圖
    12.5.2  實踐
    12.5.3  使用質量樹進行項目風險交流
    12.6  找到合適的驗證架構的試點項目
    12.7  小結
    12.8  延伸閱讀

 

<作者介紹>

(美)麥克雷//凱利|譯者:範東來//滕雨橦