基本介紹
- 中文名:NoSQL資料庫實戰派:Redis + MongoDB + HBase
- 作者:趙渝強
- 出版社:電子工業出版社
- 出版時間:2022年10月
- 頁數:416 頁
- 定價:118 元
- 開本:16 開
- ISBN:9787121443404
內容簡介,圖書目錄,作者簡介,
內容簡介
繞不過的NoSQL,一本書掌握。包含以下內容:基於記憶體的NoSQL資料庫——Redis;基於文檔的NoSQL資料庫——MongoDB;列式存儲NoSQL資料庫——HBase
圖書目錄
第1篇 基於記憶體的NoSQL資料庫
第1章 記憶體對象快取技術Memcached 2
1.1 Memcached基礎 2
1.1.1 Memcached的體系架構 2
1.1.2 Memcached的數據存儲方式 3
1.2 使用Memcached在記憶體中快取數據 3
1.2.1 【實戰】在CentOS上部署Memcached 4
1.2.2 【實戰】使用Telnet操作Memcached 6
1.2.3 【實戰】使用Java操作Memcached 10
1.2.4 【實戰】實現Memcached的客戶端路由 12
1.3 Memcached集群 16
1.3.1 【實戰】部署Memcached的“主主複製”集群 16
1.3.2 【實戰】使用KeepAlived實現Memcached的高可用 19
第2章 Redis基礎 25
2.1 Redis入門 25
2.1.1 快取的架構 26
2.1.2 Redis的優勢 27
2.1.3 Redis與其他Key-Value資料庫有何不同 27
2.1.4 一個典型的Redis套用案例——記錄用戶的登錄次數,查詢活躍用戶 27
2.2 Redis的安裝和訪問 29
2.3 Redis的數據結構 32
2.3.1 簡單動態字元串 32
2.3.2 跳躍表 33
2.3.3 壓縮列表 35
2.3.4 整數集合 36
2.3.5 字典 37
2.3.6 快表 38
2.3.7 Stream 40
2.3.8 HyperLogLog 42
2.3.9 RedisObject 43
2.4 Redis的存儲結構 43
2.5 鍵管理 45
2.5.1 鍵管理的基本操作 45
2.5.2 【實戰】遍歷鍵 49
2.5.3 【實戰】遷移鍵 53
第3章 Redis高級特性及原理 56
3.1 訊息的發布與訂閱 56
3.1.1 “發布者-訂閱者”模式 56
3.1.2 “生產者-消費者”模式 59
3.2 Redis的事務 60
3.2.1 【實戰】使用命令操作Redis的事務 61
3.2.2 【實戰】在事務操作中使用watch功能 61
3.2.3 【實戰】使用Java API操作Redis的事務 62
3.3 數據持久化 63
3.3.1 RDB持久化 63
3.3.2 AOF持久化 66
3.4 使用PipeLine最佳化請求的傳遞 69
3.5 慢查詢日誌 71
3.5.1 慢查詢的配置參數 72
3.5.2 【實戰】管理和使用慢查詢日誌 73
3.5.3 慢查詢日誌最佳實踐 74
3.6 Lua腳本程式語言 75
3.6.1 Lua基礎 75
3.6.2 【實戰】使用Lua腳本實現限流 76
第4章 Redis集群與高可用 79
4.1 Redis主從複製 79
4.1.1 部署Redis主從複製 80
4.1.2 Redis主從複製的源碼剖析 82
4.2 基於哨兵的高可用架構 84
4.2.1 部署Redis哨兵 84
4.2.2 哨兵的主要配置參數 86
4.2.3 哨兵的工作原理 87
4.3 Redis Cluster集群 90
4.3.1 什麼是Redis Cluster集群 90
4.3.2 Redis Cluster集群的體系架構 90
4.3.3 部署Redis Cluster集群 92
4.3.4 【實戰】操作與管理Redis Cluster集群 96
4.3.5 【實戰】實現Redis Cluster集群的代理分片 101
4.4 Codis集群 103
4.4.1 Codis集群的體系架構 104
4.4.2 部署Codis集群 105
4.4.3 【實戰】基於Codis集群的主從複製 109
4.4.4 【實戰】基於Codis集群的數據分散式存儲 112
第5章 Redis故障診斷與最佳化 115
5.1 監控Redis 115
5.1.1 監控Redis的記憶體 115
5.1.2 監控Redis的吞吐量 116
5.1.3 監控Redis的運行時信息 116
5.1.4 監控Redis的延時 117
5.2 刪除策略和淘汰策略 120
5.2.1 記憶體的刪除策略 120
5.2.2 記憶體的淘汰策略 122
5.3 Hot Key 124
5.3.1 監控Hot Key 124
5.3.2 Hot Key的常見處理辦法 125
5.4 Big Key 125
5.5 快取的更新策略 126
5.5.1 “maxmemory-policy更新”策略 126
5.5.2 “逾時更新”策略 126
5.5.3 “主動更新”策略 126
5.6 快取與資料庫的數據一致性 127
5.6.1 數據一致性案例分析 127
5.6.2 延時雙刪策略 128
5.6.3 異步更新快取 129
5.7 分散式鎖 129
5.8 Redis快取的常見問題 131
5.8.1 提高快取命中率 131
5.8.2 快取預熱 131
5.8.3 快取穿透 132
5.8.4 快取雪崩 132
5.8.5 快取擊穿 133
第2篇 基於文檔的NoSQL資料庫
第6章 MongoDB基礎 136
6.1 MongoDB簡介 136
6.2 部署和使用MongoDB 137
6.2.1 【實戰】在CentOS上安裝MongoDB 5.0 137
6.2.2 【實戰】使用配置檔案啟動MongoDB伺服器 139
6.2.3 【實戰】使用JavaScript命令行工具mongoshell 141
6.2.4 【實戰】使用MongoDB圖形化工具MongoDB Compass 145
6.3 MongoDB中的數據類型 148
6.3.1 ObjectId類型 148
6.3.2 日期類型 149
6.3.3 數值類型 149
6.3.4 其他數據類型 151
6.4 MongoDB的體系結構 152
6.4.1 邏輯存儲結構 152
6.4.2 物理存儲結構 153
6.5 MongoDB的存儲引擎 154
6.5.1 WiredTiger存儲引擎 154
6.5.2 MMAP v1存儲引擎 159
6.5.3 In-Memory存儲引擎 161
6.6 MongoDB的日誌——Journal日誌 163
第7章 操作MongoDB中的數據 164
7.1 使用DML語句運算元據 164
7.1.1 使用insert語句插入文檔 164
7.1.2 使用update語句更新文檔 166
7.1.3 使用delete語句刪除文檔 167
7.1.4 批處理操作 168
7.2 使用DQL語句查詢數據 169
7.2.1 【實戰】基本查詢 169
7.2.2 【實戰】查詢嵌套的文檔 171
7.2.3 【實戰】查詢數組中的文檔 173
7.2.4 【實戰】查詢數組中嵌套的文檔 174
7.2.5 【實戰】查詢空值和缺失的列 175
7.2.6 【實戰】使用游標查詢文檔 176
7.3 全文檢索 177
7.3.1 【實戰】執行全文索引 178
7.3.2 【實戰】在全文檢索中聚合數據 179
7.4 地理空間查詢 181
7.5 聚合操作 182
7.5.1 【實戰】使用Pipeline方式聚合數據 182
7.5.2 【實戰】使用MapReduce方式聚合數據 184
7.6 MongoDB中的事務 189
第8章 MongoDB的數據建模 190
8.1 資料庫建模基礎 190
8.1.1 MongoDB的數據建模方式 190
8.1.2 驗證MongoDB的數據文檔 191
8.2 MongoDB數據模型設計 195
8.2.1 文檔的“一對一”關係模型 195
8.2.2 文檔的“一對多”關係模型 196
8.2.3 文檔的樹型模型 196
8.3 使用MongoDB的索引 201
8.3.1 了解索引 201
8.3.2 了解MongoDB中的索引 202
8.3.3 【實戰】在查詢中使用單鍵索引 205
8.3.4 【實戰】在查詢中使用多鍵索引 206
8.3.5 【實戰】在查詢中使用複合索引 207
8.3.6 【實戰】在查詢中使用過期索引 210
8.3.7 【實戰】在查詢中使用全文索引 212
8.3.8 【實戰】在查詢中使用地理空間索引 213
第9章 MongoDB的管理 216
9.1 管理MongoDB的運行 216
9.1.1 【實戰】啟動MongoDB伺服器 216
9.1.2 【實戰】停止MongoDB伺服器 218
9.2 MongoDB的安全機制 219
9.2.1 了解MongoDB的用戶認證機制 219
9.2.2 【實戰】啟用MongoDB的用戶認證機制 219
9.2.3 【實戰】在MongoDB中進行用戶管理 221
9.3 基於角色的訪問控制 223
9.3.1 了解MongoDB中的角色 223
9.3.2 【實戰】基於角色控制用戶的訪問 224
9.4 MongoDB的審計功能 227
9.4.1 與審計相關的參數 227
9.4.2 【實戰】審計功能舉例 227
9.5 監控MongoDB的運行 229
9.5.1 【實戰】通過命令行工具監控MongoDB 229
9.5.2 【實戰】通過可視化工具Compass監控MongoDB 232
9.6 MongoDB的數據安全 232
9.6.1 【實戰】導入/導出MongoDB的數據 232
9.6.2 【實戰】備份/恢復MongoDB的數據 235
第10章 MongoDB的集群 238
10.1 基於MongoDB複製集實現主從 同步 238
10.1.1 MongoDB複製集基礎 238
10.1.2 部署MongoDB複製集 240
10.1.3 管理MongoDB複製集 247
10.1.4 【實戰】MongoDB複製集的選舉機制 253
10.1.5 【實戰】Oplog日誌和數據的同步 255
10.1.6 【實戰】MongoDB的事務 257
10.2 基於MongoDB分片實現數據的分散式存儲 261
10.2.1 MongoDB分片架構 261
10.2.2 【實戰】搭建MongoDB分片架構 262
10.2.3 【實戰】查看配置伺服器 268
10.2.4 片鍵的選擇 270
第3篇 列式存儲NoSQL資料庫
第11章 HBase基礎 274
11.1 大數據基礎 274
11.1.1 大數據的基本概念和特性 274
11.1.2 大數據平台要解決的核心問題 276
11.1.3 數據倉庫與大數據 278
11.1.4 Hadoop生態圈 279
11.2 BigTable(大表)與HBase的數據模型 281
11.3 HBase的體系架構 283
11.3.1 HMaster 284
11.3.2 Region Server 284
11.3.3 ZooKeeper 285
11.4 部署Hadoop環境 286
11.4.1 部署前的準備 287
11.4.2 Hadoop的目錄結構 289
11.4.3 【實戰】部署Hadoop偽分布模式 290
11.4.4 【實戰】部署Hadoop全分布模式 295
第12章 部署與操作HBase 299
12.1 在Linux上部署HBase環境 299
12.1.1 部署HBase的本地模式 299
12.1.2 部署HBase的偽分布模式 301
12.1.3 部署HBase的全分布模式 303
12.1.4 部署HBase的高可用模式 305
12.2 使用命令行操作HBase 307
12.2.1 【實戰】基礎操作 307
12.2.2 【實戰】DDL操作 308
12.2.3 【實戰】DML操作 311
12.3 HBase的Java API 313
12.3.1 【實戰】使用Java API操作HBase 313
12.3.2 【實戰】使用HBase的過濾器過濾數據 317
12.3.3 【實戰】使用MapReduce處理存儲在HBase中的數據 322
12.4 HBase的圖形工具——Web控制台 325
第13章 HBase原理剖析 327
13.1 了解HBase的存儲結構 327
13.1.1 HBase的邏輯存儲結構 328
13.1.2 HBase的物理存儲結構 329
13.1.3 LSM樹與Compaction機制 333
13.2 HBase讀數據的流程 335
13.2.1 meta表與讀取過程 335
13.2.2 讀合併與讀放大 337
13.3 HBase寫數據的流程 338
13.4 負載均衡和數據分發的最基本單元Region的管理 339
13.4.1 Region的狀態 339
13.4.2 Region的拆分 341
13.4.3 Region的合併 342
13.4.4 Region拆分的影響 342
13.5 HBase的記憶體刷新策略 343
13.5.1 Region Server級別的刷新策略 343
13.5.2 Region級別的刷新策略 344
13.5.3 按照時間決定的刷新策略 345
13.5.4 依據WAL檔案數量的刷新策略 345
13.6 了解HBase的Rowkey 346
13.6.1 Rowkey的設計原則 346
13.6.2 HBase表的熱點 347
第14章 HBase的高級特性 348
14.1 【實戰】使用多版本保存數據 348
14.2 【實戰】使用HBase的快照 350
14.3 【實戰】使用Bulk Loading方式導入數據 352
14.4 HBase的訪問控制 354
14.4.1 了解HBase的用戶許可權管理 354
14.4.2 【實戰】HBase的用戶許可權管理 355
14.5 備份HBase的數據 357
14.5.1 【實戰】使用Export/Import備份數據 358
14.5.2 【實戰】使用CopyTable備份數據 360
14.6 HBase的計數器 361
14.6.1 【實戰】在hbase shell中使用計數器 361
14.6.2 【實戰】在Java API中使用單計數器 362
14.6.3 【實戰】在Java API中使用多計數器 363
14.7 布隆過濾器 364
14.7.1 布隆過濾器的工作原理 365
14.7.2 HBase中的布隆過濾器 366
14.8 【實戰】HBase的主從複製 366
14.9 在HBase中使用SQL 368
14.9.1 安裝和使用Phoenix 369
14.9.2 Phoenix與HBase的映射關係 371
14.9.3 Phoenix中的索引 372
14.9.4 【實戰】通過JDBC程式訪問Phoniex中的數據 376
第15章 監控與最佳化HBase集群 380
15.1 HBase集群的監控指標 380
15.1.1 主機監控指標 381
15.1.2 JVM監控指標 381
15.1.3 HMaster監控指標 383
15.1.4 Region Server監控指標 384
15.2 利用可視化工具監控HBase集群 387
15.2.1 【實戰】使用Ganglia監控HBase集群 387
15.2.2 【實戰】使用JConsole監控HBase集群 391
15.2.3 【實戰】使用JVisualVM監控HBase集群 394
15.3 HBase集群的最佳化 397
15.3.1 最佳化HBase的數據管理 397
15.3.2 最佳化HBase的客戶端 401
15.3.3 最佳化HBase的配置 402
作者簡介
趙渝強
近20年IT行業從業經歷,清華大學計算機軟體工程專業畢業,華為認證講師
曾擔任京東大學大數據學院院長,Oracle中國有限公司高級技術顧問
精通大數據、資料庫、中間件技術和Java技術