譯者序 XIII
序 XV
前言 XVII
第1 章 Cassandra 概況 1
1.1 關係型數據庫有什麼問題 1
1.2 關係型數據庫簡單迴顧 5
1.2.1 RDBMS:齣類拔萃與錶現平平 6
1.2.2 互聯網的規模 12
1.3 Cassandra 的電梯間演講 13
1.3.1 50 個字介紹Cassandra 13
1.3.2 分布式與無中心 13
1.3.3 彈性可擴展 14
1.3.4 高可用與容錯 15
1.3.5 可調節的一緻性 15
1.3.6 Brewer 的CAP 理論 18
1.3.7 麵嚮行 21
1.3.8 無schema 22
1.3.9 高性能 22
1.4 Cassandra 來自何方 22
1.5 Cassandra 的應用場景 23
1.5.1 大規模部署 23
1.5.2 寫密集、統計和分析型工作 24
1.5.3 地區分布 24
1.5.4 變化的應用 24
1.6 誰在使用Cassandra 24
1.7 小結 26
第2 章 安裝Cassandra 27
2.1 安裝二進製包 27
2.1.1 解壓縮 27
2.1.2 裏麵有什麼 27
2.2 從源碼編譯 28
2.2.1 其他編譯目標 30
2.2.2 使用Maven編譯 30
2.3 運行Cassandra 30
2.3.1 在Windows平颱上運行Cassandra 31
2.3.2 在Linux下運行Cassandra 31
2.3.3 啓動服務器 32
2.4 使用命令行界麵的客戶端 33
2.5 基本命令行命令 34
2.5.1 幫助 34
2.5.2 連接服務器 35
2.5.3 描述環境 35
2.5.4 創建keyspace和列族 36
2.5.5 讀寫數據 37
2.6 小結 38
第3章 Cassandra的數據模型 39
3.1 關係型數據模型 39
3.2 簡介 40
3.3 集群 43
3.4 keyspace 43
3.5 列族 44
3.6 列 46
3.6.1 寬行與窄行 48
3.6.2 列的排序 49
3.7 超級列 50
3.8 Cassandra與RDBMS的設計差彆 53
3.8.1 沒有查詢語言 53
3.8.2 沒有引用完整性 53
3.8.3 第二索引 53
3.8.4 排序成為一種設計決策 54
3.8.5 反範式化 54
3.9 設計模式 55
3.9.1 具體化視圖 56
3.9.2 無值列 56
3.9.3 聚閤鍵 56
3.10 需要記住的幾件事 57
3.11 小結 57
第4章 應用實例 59
4.1 數據模型設計 59
4.2 酒店應用的關係型數據庫設計 60
4.3 酒店應用的Cassandra設計 61
4.4 酒店應用代碼 62
4.4.1 創建數據庫 63
4.4.2 數據結構 64
4.4.3 進行連接 65
4.4.4 預裝填數據庫 66
4.4.5 搜索應用 78
4.5 Twissandra 82
4.6 小結 82
第5章 Cassandra的架構 83
5.1 system keyspace 83
5.2 對等結構 84
5.3 gossip與故障檢測 84
5.4 逆熵與讀修復 86
5.5 memtable、SSTable和commit log 87
5.6 提示移交 89
5.7 壓緊 89
5.8 Bloom filter 91
5.9 墓碑 91
5.10 分階段事件驅動架構 92
5.11 管理器與服務 93
5.11.1 Cassandra守護進程 93
5.11.2 存儲服務 93
5.11.3 消息服務 93
5.11.4 提示移交管理器 94
5.12 小結 94
第6章 配置Cassandra 95
6.1 keyspace 95
6.1.1 創建列族 98
6.1.2 從0.6遷移到0.7 99
6.2 副本 99
6.3 副本放置策略 100
6.3.1 簡單策略 101
6.3.2 舊網絡拓撲策略 102
6.3.3 網絡拓撲策略 103
6.4 副本因子 103
6.5 分區器 105
6.5.1 隨機分區器 106
6.5.2 有序分區器 106
6.5.3 配頁有序分區器 107
6.5.4 字節序分區器 107
6.6 Snitch 107
6.6.1 Simple Snitch 107
6.6.2 PropertyFileSnitch 107
6.7 創建集群 108
6.7.1 修改集群名稱 109
6.7.2 給集群增加節點 109
6.7.3 多種子節點 111
6.8 動態加入環 113
6.9 安全 114
6.9.1 使用SimpleAuthenticator 114
6.9.2 編程鑒權 117
6.9.3 使用MD5加密 118
6.9.4 提供你自己的鑒權算法 118
6.10 雜項設置 119
6.11 附加工具 120
6.11.1 查看鍵值 120
6.11.2 導入之前版本的配置 120
6.12 小結 122
第7章 讀寫數據 123
7.1 Cassandra與RDBMS查詢的不同 123
7.1.1 沒有Update查詢 123
7.1.2 記錄級的寫原子性 123
7.1.3 不支持服務端事務 123
7.1.4 沒有重復鍵值 124
7.2 寫操作的基本屬性 124
7.3 一緻性級彆 124
7.4 讀操作的基本屬性 126
7.5 API 126
7.6 設置與插入數據 128
7.7 使用簡單的get 133
7.8 數據準備 135
7.9 切片謂詞 135
7.9.1 使用get_slice讀取特定列名 136
7.9.2 通過切片區間獲取一組列 137
7.9.3 取齣一行中的所有列 138
7.10 get_range_slices 138
7.11 multiget_slice 140
7.12 刪除 142
7.13 批量變更 144
7.13.1 批量刪除 144
7.13.2 區間鬼影 145
7.14 編程定義keyspace和列族 145
7.15 小結 146
第8章 客戶端 147
8.1 基本的客戶端API 148
8.2 Thrift 148
8.2.1 Thrift對Java的支持 151
8.2.2 異常 151
8.2.3 Thrift小結 152
8.3 Avro 152
8.3.1 Avro Ant目標 154
8.3.2 Avro規範 155
8.3.3 Avro小結 156
8.4 Git簡介 156
8.5 連接客戶端節點 157
8.5.1 客戶端列錶 157
8.5.2 循環DNS 157
8.5.3 負載均衡器 157
8.6 Cassandra Web控製颱 157
8.7 Hector(Java) 161
8.7.1 特性 161
8.7.2 Hector API 162
8.8 HectorSharp(C#) 162
8.9 Chirper 167
8.10 Chiton(Python) 167
8.11 Pelops(Java) 168
8.12 Kundera(Java ORM) 169
8.13 Fauna(Ruby) 169
8.14 小結 170
第9章 監控 171
9.1 日誌 171
9.1.1 跟蹤查看 173
9.1.2 通用技巧 174
9.2 JMX與MBean概述 175
9.2.1 MBean 177
9.2.2 集成JMX 179
9.3 通過JMX與Cassandra交互 180
9.4 Cassandra的MBean 181
9.4.1 org.apache.cassandra.concurrent 185
9.4.2 org.apache.cassandra.db 185
9.4.3 org.apache.cassandra.gms 186
9.4.4 org.apache.cassandra.service 186
9.5 定製Cassandra的MBean 188
9.6 運行時分析工具 190
9.6.1 使用JMX和JHAT進行堆分析 191
9.6.2 發現綫程問題 194
9.7 健康檢查 195
9.8 小結 196
第10章 維護 197
10.1 獲取環的信息 198
10.1.1 Info 198
10.1.2 Ring 198
10.2 獲取統計信息 199
10.2.1 使用cfstats 199
10.2.2 使用tpstats 200
10.3 基本維護工作 201
10.3.1 修復 201
10.3.2 刷寫 202
10.3.3 清理 203
10.4 快照 203
10.4.1 進行快照 203
10.4.2 清除快照 204
10.5 對集群進行負載均衡 205
10.6 退服節點 208
10.7 更新節點 210
10.7.1 刪除令牌 210
10.7.2 壓緊閾值 210
10.7.3 在一個工作的集群中改變列族 210
10.8 小結 211
第11章 性能調優 213
11.1 數據存儲 213
11.2 迴復超時 215
11.3 commit log 215
11.4 memtable 216
11.5 並發 216
11.6 緩存 217
11.7 緩衝區尺寸 218
11.8 使用Python壓力測試 218
11.8.1 生成Python Thrift接口 218
11.8.2 運行Python壓力測試 220
11.9 啓動和JVM設置 222
11.10 小結 224
第12章 集成Hadoop 225
12.1 何為Hadoop 225
12.2 使用MapReduce 226
12.3 運行字數統計例子 227
12.3.1 將數據輸齣到Cassandra 229
12.3.2 Hadoop流 229
12.4 MapReduce之上的工具 229
12.4.1 Pig 230
12.4.2 Hive 231
12.5 集群配置 231
12.6 案例 233
12.6.1 Raptr.com: Keith Thornhill 233
12.6.2 Imagini: Dave Gardner 233
12.7 小結 234
附錄 非關係型數據庫大觀 235
詞匯錶 .261
關於作者 279
關於封麵 279
· · · · · · (
收起)