●序 1
前言 3
第1章 超越關繫型數據庫 13
1.1 關繫型數據庫有什麼問題? 13
1.2 關繫型數據庫速覽 18
1.2.1 事務、ACID 性和兩段提交 19
1.2.2 模式 21
1.2.3 分片和無共享架構 22
1.3 網絡規模 25
1.4 NoSQL 的興起 26
1.5 小結 29
第2章 Cassandra 簡介 30
2.1 Cassandra 電梯間演講 30
2.1.1 50 字Cassandra 介紹 30
2.1.2 分布式與去中心化 31
2.1.3 彈性可擴展 32
2.1.4 高可用性和容錯性 33
2.1.5 可調一致性 33
2.1.6 Brewer 的CAP 理論 36
2.1.7 面向行 40
2.1.8 高性能 42
2.2 Cassandra 從哪裡來? 42
2.3 Cassandra 適合我的項目嗎? 44
2.3.1 大規模部署 44
2.3.2 大量寫操作、統計和分析 44
2.3.3 多地分布 45
2.3.4 混合雲和多雲部署 45
2.4 參與其中 45
2.5 小結 48
第3章 安裝Cassandra 49
3.1 安裝Apache 發布版本 49
3.1.1 解壓縮下載包 50
3.1.2 裡面有什麼? 50
3.2 從源碼構建 51
3.3 運行Cassandra 53
3.3.1 設置環境 54
3.3.2 啟動服務器 55
3.3.3 停止Cassandra 57
3.4 其他Cassandra 發布版本 58
3.5 運行CQL Shell 59
3.6 基本cqlsh 命令 60
3.6.1 cqlsh 幫助 61
3.6.2 cqlsh 中描述環境 62
3.6.3 cqlsh 中創建鍵空間和表 62
3.6.4 cqlsh 中讀寫數據 66
3.7 Docker 中運行Cassandra 69
3.8 小結 70
第4章 Cassandra 查詢語言 71
4.1 關繫型數據模型 71
4.2 Cassandra 的數據模型 72
4.2.1 集群 75
4.2.2 鍵空間 76
4.2.3 表 76
4.2.4 列 80
4.3 CQL 類型 83
4.3.1 數值數據類型 83
4.3.2 文本數據類型 84
4.3.3 時間和標識數據類型 85
4.3.4 其他簡單數據類型 87
4.3.5 集合 89
4.3組 93
4.3.7 用戶自定義類型 93
4.4 小結 97
第5章 數據建模 98
5.1 概念數據建模 98
5.2 RDBMS 設計 99
5.3 定義應用查詢 103
5.4 邏輯數據建模 105
5.4.1 酒店邏輯數據模型 106
5.4.2 預訂邏輯數據模型 109
5.5 物理數據建模 110
5.5.1 酒店物理數據模型 112
5.5.2 預訂物理數據模型 113
5.6 評估和改進 114
5.6.1 計算分區大小 114
5.6.2 計算磁盤上的大小 115
5.6.3 劃分大分區 117
5.7 定義數據庫模式 118
5.8 小結 123
第6章 Cassandra 架構 124
6.1 數據中心和機架 124
6.2 Gossip 和故障檢測 125
6.3 Snitch 128
6.4 環和令牌 129
6.5 虛擬節點 130
6.6 分區器 131
6.7 復制策略 132
6.8 一致性級別 133
6.9 查詢和協調器節點 134
6.10 提示移交 135
6.11 逆熵、修復和Merkle 樹 137
6.12 輕量級事務和Paxos 138
6.13 Memtable、SSTable 和提交日志 140
6.14 布隆過濾器 143
6.15 緩存 143
6.16 合並 144
6.17 刪除和墓碑 146
6.18 管理器和服務 147
6.18.1 Cassandra 守護進程 147
6.18.2 存儲引擎 147
6.18.3 存儲服務 148
6.18.4 存儲代理 149
6.18.5 消息傳遞服務 149
6.18.6 流管理器 149
6.18.7 CQL 原生傳輸服務器 150
6.19 繫統鍵空間 150
6.20 小結 153
第7章 設計使用Cassandra 的應用 154
7.1 酒店應用設計 154
7.1.1 Cassandra 和微服務架構 154
7.1.2 一個酒店應用的微服務架構 156
7.1.3 識別限界上下文 157
7.1.4 識別服務 157
7.1.5 設計微服務持久存儲 159
7.2 擴展設計 162
7.2.1 二級索引 163
7.2.2 物化視圖 167
7.3 預訂服務:一個示例微服務 171
7.4 部署和集成問題 172
7.4.1 服務、鍵空間和集群 172
7.4.2 數據中心和負載平衡 173
7.4.3 微服務間的交互 173
7.5 小結 175
第8章 使用驅動程序開發應用 176
8.1 DataStax Java 驅動程序 177
8.1.1 開發環境配置 178
8.1.2 連接集群 179
8.1.3 語句 181
8.1.4 簡單語句 181
8.1.5 準備語句 183
8.1.6 查詢生成器 185
8.1.7 對像映射器 187
8.1.8 異步執行 191
8.1.9 驅動程序配置 193
8.1.數據 200
8.1.11 調試和監控 202
8.2 DataStax Python 驅動程序 203
8.3 DataStax Node.js 驅動程序 204
8.4 DataStax C# 驅動程序 205
8.5 其他Cassandra 驅動程序 205
8.6 小結 207
第9章 讀寫數據 208
9.1 寫 208
9.1.1 寫一致性級別 208
9.1.2 Cassandra 寫路徑 210
9.1.3 文件寫入磁盤 212
9.1.4 輕量級事務 215
9.1.5 批處理 218
9.2 讀 221
9.2.1 讀一致性級別 221
9.2.2 Cassandra 讀路徑 223
9.2.3 讀修復 225
9.2.4 區間查詢、排序和過濾 228
9.2.5 分頁 231
9.3 刪除 233
9.4 小結 236
第10章 配置和部署Cassandra 237
10.1 Cassandra 集群管理器 237
10.1.1 創建集群 238
10.1.2 為集群增加節點 241
10.1.3 動態加入環 243
10.2 節點配置 244
10.2.1 種子節點 244
10.2.2 Snitch 245
10.2.3 分區器 247
10.2.4 令牌和虛擬節點 249
10.2.5 網絡接口 250
10.2.6 數據存儲 251
10.2.7 啟動和JVM 設置 253
10.3 規劃集群部署 254
10.3.1 集群拓撲和復制策略 255
10.3.2 確定集群規模 258
10.3.3 選擇實例 259
10.3.4 存儲 259
10.3.5 網絡 260
10.4 雲部署 261
10.4.1 Web 服務 262
10.4.2 Google 雲平臺 265
10.4.3 Microsoft Azure 266
10.5 小結 266
第11章 監控 268
11.1 用JMX 監控Cassandra 268
11.2 Cassandra 的MBean 271
11.2.1 數據庫MBean 272
11.2.2 集群相關MBean 276
11.2.3 內部MBean 278
11.3 用nodetool 監控 279
11.3.1 獲得集群信息 280
11.3.2 獲得統計信息 283
11.4 虛擬表 285
11.4.1 繫統虛擬模式 286
11.4.2 繫統視圖 287
11.5 指標 290
11.6 日志 292
11.6.1 檢查日志文件 295
11.6.2 全量查詢日志 296
11.7 小結 298
第12章 維護 299
12.1 健康檢查 299
12.2 常見維護任務 300
12.2.1 刷新輸出 300
12.2.2 清理 301
12.2.3 修復 302
12.2.4 重建索引 307
12.2.5 移動令牌 308
12.3 增加節點 308
12.3.1 向已有的數據中心增加節點 308
12.3.2 向集群增加數據中心 309
12.4 處理節點故障 311
12.4.1 修復失敗節點 311
12.4.2 替換節點 312
12.4.3 移除節點 313
12.5 升級Cassandra 317
12.6 備份和恢復 319
12.6.1 建立快照 320
12.6.2 清除快照 321
12.6.3 啟用增量備份 322
12.6.4 從快照恢復 322
12.7 SSTable 實用工具 323
12.8 維護工具 325
12.8.1 Netflix Priam 325
12.8.2 DataStax OpsCenter 325
12.8.3 Cassandra Sidecars 325
12.8.4 Cassandra Kubernetes Operators 327
12.9 小結 330
第13章 性能調優 331
13.1 管理性能 331
13.1.1 設置性能目標 331
13.1.2 基準測試和壓力測試 333
13.1.3 監控性能 338
13.1.4 分析性能問題 340
13.1.5 跟蹤 340
13.1.6 調優方法 343
13.2 緩存 344
13.2.1 鍵緩存 344
13.2.2 行緩存 345
13.2.3 塊緩存 346
13.2.4 計數器緩存 347
13.2.5 保存的緩存設置 347
13.3 Memtable 348
13.4 提交日志 349
13.5 SSTables 350
13.6 提示移交 351
13.7 合並 352
13.8 並發和線程 356
13.9 網絡和超時 357
13.10 JVM 設置 359
13.10.1 內存 360
13.10.2 垃圾回收 360
13.11 小結 364
第14章 安全 365
14.1 認證和授權 367
14.1.1 密碼認證器 367
14.1.2 使用CassandraAuthorizer 371
14.1.3 基於角色的訪問控制 373
14.2 加密 375
14.2.1 SSL、TLS 和證書 376
14.2.2 節點間加密 379
14.2.3 客戶端- 節點間加密 381
14.3 JMX 安全性 382
14.3.1 保護JMX 訪問安全 383
14.3.2 安全MBean 385
14.4 審計日志 386
14.5 小結 389
第15章 遷移和集成 390
15.1 了解何時遷移 390
15.2 調整數據模型 391
15.2.1 轉換實體 393
15.2.2 轉換關繫 394
15.3 調整應用 396
15.3.1 重構數據訪問 397
15.3.2 維護一致性 398
15.3.3 遷移存儲過程 400
15.4 規劃部署 405
15.5 遷移數據 406
15.5.1 零停機遷移 406
15.5.2 批量加載 407
15.6 常見集成 409
15.6 1 使用Apache Kafka 管理數據流 409
15.6.2 用Apache Lucene、SOLR 和Elasticsearch 搜索 412
15.6.3 使用Apache Spark 分析數據 413
15.7 小結 421
這本書盡可能合理地把各章設計為獨立的指南。對於一本關於Cassandra的書,這一點很重要,因為讀者可能有不同的工作角色,身處不同的行業。借用軟件領域的一個說法,這本書設計為是“模塊化”的。如果你剛接觸Cassandra,可以按順序閱讀;如果你已經過了入門階段,也可以在後面的章節中找到你需要的內容,每一章都可以作為一個獨立的指南。
第1章,這一章將回顧獲得了極大成功的關繫型數據庫的歷史,並介紹非關繫型數據庫技術(如Cassandra)的蓬勃興起。
第2章,Cassandra簡介
這一章介紹Cassandra,並討論它有哪些讓人激動和不同尋常的地方,它來自哪裡,另外有哪些優點。
第3章,安裝Cassandra
這一章會帶著你安裝和運行Cassandra,並嘗試它的一些基本特性。
第4章,Cassandra查詢語言
(美)傑夫·卡彭特,(美)埃本·休伊特 著 林琪 等 譯
傑夫·卡彭特(Jeff Carpenter)是精品國際酒店集團(Choice Hotels International)的一名繫統架構師,在服務業和國防工業有著20年的從業經驗。他的興趣包括SOA微服務、大規模繫統架構設計以及數據架構。