內容簡介
本書對統稱為NoSQL的分散式非關係型資料庫原理和使用方法進行介紹。
第 一章,首先介紹NoSQL資料庫的起源背景和設計理念,以及相關技術概念。其次介紹了大數據技術體系,以及NoSQL在該技術體系的地位和作用。
第 二章首先回顧關係型資料庫的主要機制,以及NoSQL資料庫的常見技術原理,以及NoSQL的常見存儲模式。
第三章對Hadoop工具進行介紹,重點介紹HDFS的技術原理和基本使用方法。
第四章介紹HBase的基本架構、基本使用方法和編程方法。
第五章介紹HBase中核心技術原理,包括水平分區機制、數據寫入機制、列族與合併機制等。對HBase中的管理方法、深入使用方法進行簡介。以及對HBase的第三方外掛程式與工具進行介紹。
第六章介紹Cassandra的基本原理和使用方法。首先介紹Amazon Dynamo的相關原理,其次介紹Cassandra的安裝配置與CQL語言。
第七章介紹MongoDB為代表的文檔型資料庫的原理和基本使用方法。
第八章介紹其他一些知名的NoSQL資料庫技術與工具。
目錄
第1章 緒論 1
1.1 資料庫的相關概念 2
1.1.1 關係型資料庫管理系統 2
1.1.2 關係型資料庫的瓶頸 4
1.1.3 NoSQL的特點 4
1.1.4 NewSQL的概念 6
1.1.5 NoSQL的典型套用場景 7
1.2 大數據的技術體系 8
1.2.1 大數據的特徵 9
1.2.2 大數據的採集 10
1.2.3 大數據的存儲 11
1.2.4 大數據的管理和使用 13
1.2.5 數據可視化 13
1.2.6 大數據安全與治理 15
小結 15
思考題 16
第 2章 NoSQL資料庫的基本原理 17
2.1 關係型資料庫的原理簡述 18
2.1.1 關係模型 18
2.1.2 關係型資料庫的完整性約束 19
2.1.3 關係型資料庫的事務機制 19
2.1.4 關係型資料庫的分散式部署 21
2.2 分散式數據管理的特點 23
2.2.1 數據分片 24
2.2.2 數據多副本 24
2.2.3 一次寫入多次讀取 26
2.2.4 分散式系統的可伸縮性 27
2.3 分散式系統的一致性問題 27
2.3.1 CAP原理 28
2.3.2 BASE和最終一致性 29
2.3.3 Paxos算法簡介 30
2.4 NoSQL的常見模式 33
2.4.1 鍵值對存儲模式 33
2.4.2 文檔式存儲模式 34
2.4.3 列存儲模式 35
2.4.4 圖存儲模式 36
2.5 NoSQL系統的其他相關技術 37
2.5.1 分散式數據處理 37
2.5.2 時間同步服務 38
2.5.3 布隆過濾器 38
小結 40
思考題 40
第3章 HDFS的基本原理 41
3.1 Hadoop概述 42
3.1.1 Hadoop的由來 42
3.1.2 Hadoop的架構與擴展 43
3.1.3 Hadoop的部署需求 45
3.2 HDFS原理 46
3.2.1 HDFS架構 46
3.2.2 Namenode的數據結構 47
3.2.3 數據分塊和多副本機制 48
3.2.4 數據讀寫原理 50
3.2.5 HDFS支持的序列化檔案 51
3.3 部署和配置HDFS 52
3.3.1 部署HDFS 53
3.3.2 HDFS的基本配置 55
3.3.3 集群的啟動和停止 57
3.4 使用和管理HDFS 58
3.4.1 管理和操作命令 58
3.4.2 格式化Namenode 59
3.4.3 Namenode的安全模式 60
3.4.4 元數據恢復 61
3.4.5 子節點添加與刪除 61
3.4.6 HDFS檔案系統操作 62
3.4.7 以Web方式查看檔案系統 64
3.5 MapReduce原理簡介 66
3.6 Hive分散式數據倉庫 68
小結 69
思考題 69
第4章 HBase的基本原理與使用 70
4.1 HBase概述 71
4.2 HBase的數據模型 72
4.3 HBase的拓撲結構 74
4.4 HBase部署與配置 75
4.5 子節點伸縮性管理 78
4.6 HBase的基本操作 79
4.6.1 HBase Shell 79
4.6.2 表和列族操作 79
4.6.3 數據更新 82
4.6.4 數據查詢 83
4.6.5 過濾查詢 85
4.6.6 快照操作 89
4.7 批量導入導出 89
4.7.1 批量導入數據 89
4.7.2 備份和恢復 91
4.8 通過Java訪問HBase 92
4.8.1 開發環境的配置 92
4.8.2 表的連線和操作 93
4.8.3 數據更新 94
4.8.4 數據查詢 96
4.8.5 刪除列和行 97
4.8.6 過濾器的使用 98
4.9 通過Python訪問HBase 99
4.9.1 基於Thrift框架的多語言編程 99
4.9.2 環境準備 100
4.9.3 代碼分析 101
小結 104
思考題 104
第5章 HBase的高 級原理 105
5.1 水平分區原理 106
5.1.1 META表 106
5.1.2 數據寫入和讀取機制 108
5.1.3 預寫日誌 110
5.1.4 分區拆分 111
5.2 列族與Store 113
5.2.1 列族的屬性 113
5.2.2 表在HDFS上的存儲 115
5.2.3 HFile的結構 116
5.2.4 Storefile合併 119
5.3 數據表的基本設計原則 121
5.4 HBase集群的高可用性與伸縮性 121
5.4.1 Zookeeper的基本原理 122
5.4.2 基於Zookeeper的高可用性 124
5.4.3 獨立安裝Zookeeper 125
5.4.4 集群間同步複製 126
5.5 HBase的擴展 128
5.5.1 協處理器機制 128
5.5.2 基於HBase的分散式處理 129
5.5.3 擴展開源軟體 131
5.5.4 FusionInsight HD簡介 134
小結 135
思考題 136
第6章 Cassandra的原理和使用 137
6.1 Cassandra概述 138
6.2 Cassandra的技術原理 138
6.2.1 Amazon Dynamo 138
6.2.2 Cassandra的數據模型 143
6.2.3 Yaml格式 145
6.2.4 其他相關技術原理 146
6.3 Cassandra的部署與配置 147
6.3.1 單節點部署Cassandra 147
6.3.2 Cassandra的配置檔案 148
6.3.3 Cassandra集群部署 150
6.3.4 集群啟動 150
6.4 CQL語言與cqlsh環境 151
6.4.1 cqlsh環境簡介 152
6.4.2 鍵空間管理 153
6.4.3 數據表管理 156
6.4.4 CQL的數據類型 158
6.5 CQL數據查詢 161
6.5.1 基本數據查詢 161
6.5.2 條件查詢 162
6.5.3 索引機制 164
6.5.4 使用標量函式 166
6.6 CQL數據更新 166
6.6.1 插入、更新和刪除 166
6.6.2 讀寫一致性 169
6.6.3 集合列操作 171
6.6.4 計數器列的操作 174
6.6.5 日期時間列的操作 175
6.6.6 批量導入/導出數據 176
6.7 基本集群維護方法 177
6.7.1 編程接口簡介 177
6.7.2 多數據中心與機架感知策略 177
6.7.3 Nodetool工具 178
6.7.4 常見節點管理方法 180
6.8 編程訪問Cassandra 181
6.8.1 通過Java訪問Cassandra 181
6.8.2 通過Python訪問Cassandra 182
小結 183
思考題 183
第7章 MongoDB的原理和使用 184
7.1 概述 185
7.2 MongoDB的技術原理 185
7.2.1 文檔和集合 185
7.2.2 分片機制和集群架構 186
7.2.3 CouchDB簡介 188
7.3 安裝配置MongoDB 189
7.3.1 單機環境部署 189
7.3.2 MongoDB的配置檔案 191
7.4 基本命令行操作 191
7.4.1 Shell環境 191
7.4.2 資料庫和集合操作 193
7.4.3 基本增刪改查操作 194
7.4.4 聚合和管道 196
7.4.5 索引操作 198
7.4.6 Gridfs的原理和操作 201
7.5 批量操作和數據備份 203
7.6 MongoDB集群化部署 204
7.6.1 單機多實例 204
7.6.2 部署複製集 205
7.6.3 部署分片集 209
7.7 通過Java訪問MongoDB 213
7.7.1 表和數據操作 213
7.7.2 Gridfs操作 216
7.8 通過Python訪問MongoDB 218
小結 220
思考題 220
第8章 其他NoSQL資料庫簡介 221
8.1 圖資料庫簡介 222
8.2 Neo4j的安裝與使用 223
8.2.1 在Windows中安裝Neo4j 223
8.2.2 在CentOS 7中安裝Neo4j 224
8.2.3 Neo4j的Web操作界面 225
8.2.4 Cypher語言簡介 226
8.2.5 通過Java訪問Neo4j 229
8.2.6 通過Python訪問Neo4j 230
8.3 Redis和記憶體資料庫 231
8.4 搜尋引擎系統 232
小結 236
思考題 236
附錄 237
附錄1 在CentOS 7上實現SSH無密碼訪問 237
附錄2 在CentOS 7上部署NTP服務端與客戶端 239
附錄3 在CentOS 7上安裝Python 3 240
附錄4 在CentOS 7上安裝Thrift編譯器 241
附錄5 《NoSQL資料庫原理》配套實驗課程方案簡介 242