<內容介紹>
◎NoSQL 不是產品,而是一個當紅的概念,為雲端時代不間斷資料的儲存基礎
◎NoSQL 不是 No SQL,而是 Not Only SQL,不但保留了 SQL 的高邏輯性,更加上了分散式架構的強項
◎傳統關聯式資料庫(SQL)已存在30年,再面對全球每年100億顆硬碟的增長量已完全無法承載負擔
◎使用 NoSQL,用成千上萬的廉價 PC,就能保存及處理大數據,隨時擴充,不怕電腦當機
◎介紹全球目前當紅的各個 NoSQL,Cassendra (Facebook 使用)、BigTable(Google使用)、Redis(Flickr及新浪使用)
面對全球每年將近100億顆資料的成長,大數據的資料處理早已成為顯學。隨著大數據的概念興起,各行各業也面臨到保存各種資料的難題。資料的保存不只是保存而已,還必須成為資料倉儲(Data Warehouse)、資料分析、全文檢索、行為預測等功能的基礎。在傳統的關聯式資料庫(Oracle、MySQL、SQL Server)已老態龍鍾,或是需要高成本的伺服器來執行時,NoSQL 類的資料挾其水平擴充性(Scale out),使用一般PC就可擴充其功能的優勢,逐漸成為全球新寵。NoSQL 這個新興的觀念,已成為雲端時代的基本知識,本書可讓你快速上手大數據及 NoSQL,幫你成為雲端時代最性感行業(Sexiest Industry)的一員!
適合:對資料庫知識有一定了解者、或有較好的程式設計基礎和閱讀程式的能力、有一定Linux作業系統的基礎知識者
<章節目錄>
前言
01 概論
1.1 引子
1.2 巨量資料挑戰
1.3 巨量資料的儲存和管理
1.3.1 平行資料庫
1.3.2 NoSQL資料管理系統
1.3.3 NewSQL資料管理系統
1.3.4 雲端資料管理
1.4 巨量資料的處理和分析
1.5 小結
參考文獻
02 資料一致性理論
2.1 CAP理論
2.2 資料一致性模型
2.3 ACID與BASE
2.4 資料一致性實現技術
2.4.1 Quorum系統NRW策略
2.4.2 兩階段傳送協定
2.4.3 時間戳記策略
2.4.4 Paxos
2.4.5 向量時鐘
2.5 小結
參考文獻
03資料儲存模型
3.1 總論
3.2 鍵值儲存
3.2.1 Redis
3.2.2 Dynamo
3.3 列式儲存
3.3.1 Bigtable
3.3.2 Cassandra與HBase
3.4 文件儲存
3.4.1 MongoDB
3.4.2 CouchDB
3.5 圖形儲存
3.5.1 Neo4j
3.5.2 GraphDB
3.6 小結
參考文獻
04 資料分區與放置策略
4.1 分區的意義
4.1.1 為什麼要分區
4.1.2 分區的優點
4.2 範圍分區
4.3 列表分區
4.4 雜湊分區
4.5 三種分區的比較
4.6 放置策略
4.6.1 一致性雜湊演算法
4.6.2 容錯性與可擴充性分析
4.6.3 虛擬節點
4.7 小結
參考文獻
05 巨量資料處理方法
5.1 MapReduce簡介
5.2 MapReduce資料流程
5.3 MapReduce資料處理
5.3.1 傳送作業
5.3.2 初始化作業
5.3.3 分配工作
5.3.4 執行工作
5.3.5 更新工作執行進度和狀態
5.3.6 完成作業
5.4 Dryad簡介
5.4.1 DFS Cosmos介紹
5.4.2 Dryad執行引擎
5.4.3 DryadLINQ解釋引擎
5.4.4 DryadLINQ程式設計
5.5 Dryad資料處理步驟
5.6 MapReduce vs Dryad
5.7 小結
參考文獻
06 資料複製與容錯技術
6.1 巨量資料複製的作用和代價
6.2 巨量資料複製的策略
6.2.1 Dynamo的複寫原則
6.2.2 CouchDB的複寫原則
6.2.3 PNUTS的複寫原則
6.3 巨量資料的故障發現與處理
6.3.1 Dynamo的故障發現與處理
6.3.2 CouchDB的故障發現與處理
6.3.3 PNUTS的故障發現與處理
6.4 小結
參考文獻
07 資料壓縮技術
7.1 資料壓縮原理
7.1.1 資料壓縮的定義
7.1.2 資料為什麼可以壓縮
7.1.3 資料壓縮分類
7.2 傳統壓縮技術[1]
7.2.1 霍夫曼編碼
7.2.2 LZ77演算法
7.3 巨量資料帶來的3V挑戰
7.4 Oracle混合列壓縮
7.4.1 倉庫壓縮
7.4.2 歸檔壓縮
7.5 Google資料壓縮技術
7.5.1 尋找長的重複串
7.5.2 壓縮演算法
7.6 Hadoop壓縮技術
7.6.1 LZO簡介
7.6.2 LZO原理[5]
7.7 小結
參考文獻
08 快取技術
8.1 分散式快取簡介
8.1.1 分散式快取的產生
8.1.2 分散式快取的應用
8.1.3 分散式快取的效能
8.1.4 衡量可用性的標準
8.2 分散式快取的內部機制
8.2.1 生命期機制
8.2.2 一致性機制
8.2.3 直接讀取與直接寫入機制
8.2.4 查詢機制
8.2.5 事件觸發機制
8.3 分散式快取的拓撲結構
8.3.1 複製式拓撲
8.3.2 分割式拓撲
8.3.3 用戶端快取拓撲
8.4 小結
參考文獻
09 key-value資料庫
9.1 key-value模型綜述
9.2 Redis
9.2.1 Redis概述
9.2.2 Redis下載與安裝
9.2.3 Redis入門操作
9.2.4 Redis在業內的應用
9.3 Voldemort
9.3.1 Voldemort概述
9.3.2 Voldemort下載與安裝
9.3.3 Voldemort設定
9.3.4 Voldemort開發介紹[3]
9.4 小結
參考文獻
10 Column-Oriented資料庫
10.1 Column-Oriented資料庫簡介
10.2 Bigtable資料庫
10.2.1 Bigtable資料庫簡介
10.2.2 Bigtable資料模型
10.2.3 Bigtable基礎架構
10.3 Hypertable資料庫
10.3.1 Hypertable簡介
10.3.2 Hypertable安裝
10.3.3 Hypertable架構
10.3.4 Hypertable中的基本概念和原理
10.3.5 Hypertable的查詢
10.4 Cassandra資料庫
10.4.1 Cassandra簡介
10.4.2 Cassandra設定
10.4.3 Cassandra資料庫的連接
10.4.4 Cassandra叢集機制
10.4.5 Cassandra的讀/寫機制
10.5 小結
參考文獻
11 文件資料庫
11.1 文件資料庫簡介
11.2 CouchDB資料庫
11.2.1 CouchDB簡介
11.2.2 CouchDB安裝
11.2.3 CouchDB入門
11.2.4 CouchDB查詢
11.2.5 CouchDB的儲存結構
11.2.6 SQL和CouchDB
11.2.7 分散式環境中的CouchDB
11.3 MongoDB資料庫
11.3.1 MongoDB簡介
11.3.2 MongoDB的安裝
11.3.3 MongoDB入門
11.3.4 MongoDB索引
11.3.5 SQL與MongoDB
11.3.6 MapReduce與MongoDB
11.3.7 MongoDB與CouchDB比較
11.4 小結
參考文獻
12 圖型資料庫
12.1 圖型資料庫的由來及基本概念
12.1.1 圖型資料庫的由來
12.1.2 圖型資料庫的基本概念
12.2 Neo4j圖型資料庫
12.2.1 Neo4j簡介
12.2.2 Neo4j使用教學
12.2.3 分散式Neo4j — Neo4j HA
12.2.4 Neo4j工作機制及優缺點淺析
12.3 GraphDB
12.3.1 GraphDB簡介
12.3.2 GraphDB的整體架構
12.3.3 GraphDB的資料模型
12.3.4 GraphDB的安裝
12.3.5 GraphDB的使用
12.4 OrientDB
12.4.1 背景
12.4.2 OrientDB是什麼
12.4.3 OrientDB的原理及相關技術
12.4.4 Windows下OrientDB的安裝與使用
12.4.5 相關Web應用
12.5 三種圖型資料庫的比較
12.5.1 特徵比較表
12.5.2 分散式模式及應用比較
12.6 小結
參考文獻
13 以Hadoop為基礎的資料管理系統
13.1 Hadoop簡介
13.2 HBase
13.2.1 HBase系統結構
13.2.2 HBase資料模型
13.2.3 HBase的安裝和使用
13.2.4 HBase與RDBMS
13.3 Pig
13.3.1 Pig的安裝和使用
13.3.2 Pig Latin語言
13.3.3 Pig實例
13.4 Hive
13.4.1 Hive的資料儲存
13.4.2 Hive的中繼資料儲存
13.4.3 安裝Hive
13.4.4 HiveQL簡介
13.4.5 Hive的網路介面(WebUI)
13.4.6 Hive的JDBC介面
13.5 小結
參考文獻
14 NewSQL資料庫
14.1 NewSQL資料庫簡介
14.2 MySQL Cluster
14.2.1 概述
14.2.2 MySQL Cluster的層次結構
14.2.3 MySQL Cluster的優勢和應用
14.2.4 巨量資料處理中的sharding技術
14.2.5 單機環境下MySQL Cluster的安裝
14.2.6 MySQL Cluster的分散式安裝與設定指導
14.3 VoltDB
14.3.1 傳統關聯式資料庫與VoltDB
14.3.2 VoltDB的安裝與設定
14.3.3 VoltDB元件
14.3.4 Hello World
14.3.5 使用Generate指令稿
14.3.6 Eclipse整合開發
14.4 小結
參考文獻
15 分散式快取系統
15.1 Memcached快取技術
15.1.1 背景介紹
15.1.2 Memcached快取技術的特點
15.1.3 Memcached安裝[3]
15.1.4 Memcached中的資料操作
15.1.5 Memcached的使用
15.2 Microsoft Velocity分散式快取系統
15.2.1 M