《Cassandra實戰 》是2011年機械工業出版社出版的圖書,作者是郭鵬。
基本介紹
- 書名:Cassandra實戰
- 作者:郭鵬
- ISBN:7111341643, 9787111341642
- 頁數:303頁
- 出版社:機械工業出版社; 第1版
- 出版時間:2011年6月1日
- 裝幀:平裝
- 開本:16
- 叢書名:資料庫技術叢書
內容簡介,編輯推薦,媒體推薦,圖書目錄,作者簡介,
內容簡介
《Cassandra實戰》是國內首本Cassandra專著,由Cassandra領域的先驅者和實踐者親自執筆,多位資料庫專家聯袂推薦,權威性毋庸置疑。《Cassandra實戰》內容全面,基於Cassandra最新版撰寫,系統地講解了Cassandra的所有功能特性和使用方法;實戰性強,不僅包含大量示例代碼,而且還設計了一個完整的線上交易系統實例;有一定的深度,不僅結合原始碼分析了Cassandra的底層機制和工作原理,而且還精心總結了一些關於Cassandra的最佳實踐。
《Cassandra實戰》一共分為13章,首先簡單介紹了NoSQL的優勢,以及幾種具有代表性的NoSQL資料庫的功能特性;其次詳細講解了Cassandra的安裝和配置、數據模型和排序規則、編程接口等基礎知識;接著以疊代的方式演示了一個基於Cassandra的線上交易系統的完整開發過程,很好地將基礎理論融入到了實踐中;再接著結合原始碼分析了Cassandra的集群機制、內部數據存儲結構、數據更新機制、數據讀取機制、數據壓縮機制、啟動流程等與Cassandra的底層機制和工作原理相關的內容;最後講解了Cassandra在分散式環境中的套用、與Hadoop的整合,以及相關的最佳實踐。附錄中包含了《Cassandra實戰》示例的原始碼以及在Eclipse環境中編輯和修改Cassandra的原始碼方法。
《Cassandra實戰》適合所有對Cassandra感興趣的讀者閱讀。通過《Cassandra實戰》,不僅能全面掌握Cassandra的基礎知識和使用方法,還能深入理解Cassandra的底層機制和工作原理,以及它在複雜現實環境中的套用。
編輯推薦
《Cassandra實戰》:《Cassandra實戰》內容全面,系統地講解了Cassandra的所有功能特性及其使用方法。《Cassandra實戰》深入淺出,結合原始碼分析了Cassandra的底層機制和工作原理。《Cassandra實戰》由國內Cassandra領域的驅者和實踐者親自執筆,多位資料庫專家聯袂推薦。
以Face book和Twitter為代表的Web 2. 套用的數據的爆炸性增長為後台存儲系統帶來了兩個新的挑戰:海量數據存儲數據查詢低延時
為了設計出能夠存儲海量數據並實現低延時的資料庫架構,Google和Amazon分別給出了自己的實現技術,並且能滿足不同的需求。Google開發了BigTable,Amazon開發了Dynamo。這兩種實現都具有高擴展性和高可用性,並且可以在廉價的伺服器中穩定運行,節約了大量的硬體成本。Face book基於Google和Amazon的研究成果開發出了Cassandra,它不僅具備BigTable強大的數據模型,而且還具備Dynamo的簡潔性,例如端到端數據備份,以及強大的錯誤容災功能等。
2008年,Face book將Cassandra貢獻給了開源社區。今天,Cassandra已經成為實現訪問低延時和海量數據存儲的首選架構。大量的公司和機構都開始使用Cassandra構建實時應用程式以處理海量的數據,其中包括Netflix、TWitter和Cisco等國際知名企業。
Cassandra陽的開發社區非常活躍,它在0.6版中與Hadoop進行了整合,使得Cassandra中的數據能夠被Hadoop處理;在0.7版中,它又新增了二級索引和線上更新Schema等功能。更讓人期待的是,Cassandra將實現HDFS的接口,成為HDFS和HBase的替換方案,能提供更好的性能。
《Cassandra實戰》內容全面,實戰性強,不僅系統地講解了Cassandra的使用方法,而且還從原始碼的角度對Cassandra的實現原理和工作機制進行了分析和探討,深度、廣度和實踐性完美結合,相信能給廣大Cassandra用戶帶來一定的幫助。
媒體推薦
毫無疑問,NoSQL資料庫的出現讓資料庫的選擇性變得更加豐富。Facebook公司推出的Cassandra無疑是開源NoSQL產品中的一顆閃亮新星。Facebook、Twitter、Digg等公司對Cassandra的使用已經證明了它不是一個玩具產品,其完全可以在複雜的生產環境下承擔重要的角色。同時,越來越多的關係資料庫也開始關注NoSQL對資料庫技術的影響,如最近MySQL資料庫下的InnoDB存儲引擎已經提供了NoSQL的訪問方式。《Cassandra實戰》對Cassandra的配置、套用、編譯等內容進行了詳細的介紹,想對Cassandra一探究竟的讀者千萬不能錯過。
——姜承堯 資深MySQL資料庫專家,著有經典著作《MySQL技術內幕:InnoDB存儲引擎》
Cassandra最初是由Facebook開發的一套開源的分散式NoSQL資料庫系統,它同時具備了Google BigTable的數據模型和Amazon Dynamo的完全分散式架構,具有良好的可擴展性,目前被很多大型的Web2.0網站所使用,是一種流行的分散式結構化數據存儲方案。《Cassandra實戰》作者維護Cassandra資料庫已經有很長時間,具有豐富的一線工作經驗,同時本書還結合源碼對一些底層的機制和原理進行了分析,值得國中級讀者參考。
——楊海朝 新浪網(中國)技術有限公司首席DBA/新浪微博資料庫負責人
NoSQL是IT領域當下討論最熱烈的技術話題之一。2010年,Cassandra的去中心化和無縫擴展的特性吸引了眾多NoSQL冬粉的眼球,成為了NoSQL陣營中的一道亮麗風景線。本書既能引領我們全面掌握Cassandra的基礎知識,又能幫助我們深入了解Cassandra的運行機制與原理。相信在閱讀完本書後,我們將會對Cassandra有一個全面而深入的認識。對於喜愛NoSQL的我來說,看到國內有相關的書籍出版,非常興奮,特此向所有關注NoSQL的朋友推薦《Cassandra實戰》。
——孫立 資料庫專家/NoSQL先驅/去哪兒網高級系統架構師
有很多技術在出現後不久就淡出了人們的視野,導致這種情況發生的原因有很多,其中一個重要的原因就是沒有合適的套用環境。在這一點上,NoSQL技術無疑是幸運的。因為我們所熟知的關係型資料庫在很多超大規模、高並發的Web 2.0網站套用中面臨很多無法克服的問題,所以近幾年NoSQL技術越來越受到關注和重視。Amazon的Dynamo和Google的BigTable都是非常成功的商業NoSQL產品,很多開源的NoSQL產品也得到了長足的發展,Cassandra就是其中之一。《Cassandra實戰》由淺入深地介紹了Cassandra的基礎知識和它在生產環境中的套用,無疑是一本全面了解Cassandra的好書,本書將引領你走進無比精彩的NoSQL世界。
——張勤 著有《linux伺服器配置全程實錄》
圖書目錄
前言
第1章 認識NoSQL/1
1.1 NoSQL的起源和發展現狀/2
1.2 為什麼要使用NoSQL/2
1.3 開源NoSQL產品介紹/3
1.3.1 Key/Value的NoSQL資料庫/3
1.3.2 面向文檔的NoSQL資料庫/4
1.3.3 面向列的NoSQL資料庫/5
1.3.4 面向圖的NoSQL資料庫/6
1.4 本章小結/7
第2章 Cassandra快速入門/9
2.1 在Windows環境運行單機版Cassandra/10
2.1.1 配置JRE/11
2.1.2 配置運行Cassandra 0.6.x/11
2.1.3 配置運行Cassandra 0.7.x/12
2.2 在Linux環境運行單機版Cassandra/14
2.2.1 配置JRE/14
2.2.2 配置運行Cassandra 0.6.x/15
2.2.3 配置運行Cassandra 0.7.x/16
2.3 Cassandra的數據模型/18
2.3.1 Column/18
2.3.2 SuperColumn/18
2.3.3 ColumnFamily/19
2.3.4 Keyspace/20
2.4 Cassandra的數據排序規則/20
2.5 配置數據類型/22
2.6 使用命令行工具與Cassandra互動/23
2.6.1 與Cassandra 0.6.x進行互動/23
2.6.2 與Cassandra 0.7.x進行互動/24
2.7 本章小結/26
第3章 理解Cassandra編程接口/27
3.1 多語言服務開發框架Thrift/28
3.2 Cassandra的數據類型/28
3.2.1 Column/28
3.2.2 SuperColumn/29
3.2.3 ColumnOrSuperColumn/29
3.2.4 ColumnParent/29
3.2.5 ColumnPath/30
3.2.6 SliceRange/30
3.2.7 SlicePredicate/31
3.2.8 Deletion/31
3.2.9 Mutation/31
3.2.10 KeyRange/31
3.2.11 KeySlice/32
3.2.12 TokenRange/32
3.2.13 AuthenticationRequest/32
3.2.14 ConsistencyLevel/33
3.2.15 NotFoundException/33
3.2.16 InvalidRequestException/34
3.2.17 UnavailableException/34
3.2.18 TimedOutException/34
3.2.19 AuthenticationException/34
3.2.20 AuthorizationException/35
3.3 Cassandra的編程接口/35
3.3.1 get/35
3.3.2 get_slice/36
3.3.3 multiget_slice/36
3.3.4 get_count/37
3.3.5 get_range_slices/37
3.5.6 insert/38
3.3.7 remove/38
3.3.8 batch_mutate/39
3.3.9 describe_keyspaces/39
3.3.10 describe_keyspace/39
3.3.11 describe_cluster_name/40
3.3.12 describe_version/40
3.3.13 describe_ring/40
3.4 Cassandra 0.7.x版本新增功能/40
3.4.1 二級索引/40
3.4.2 動態修改Schema/44
3.4.3 自動清除過期數據/46
3.5 本章小結/47
第4章 基於Cassandra的線上交易系統/49
4.1 需求分析/50
4.2 數據模型設計/50
4.2.1 Seller/51
4.2.2 Buyer/51
4.2.3 Product/52
4.2.4 ProductCategory/53
4.2.5 Comment/54
4.3 編碼實現/54
4.3.1 修改Keyspace設定/55
4.3.2 建立Eclipse項目/56
4.3.3 實體對象實現/55
4.3.4 Cassandra數據操作接口實現/56
4.4 系統功能驗證/60
4.4.1 BuyerDao功能驗證/60
4.4.2 SellerDao功能驗證/61
4.4.3 ProductDao功能驗證/62
4.5 遷移到Cassandra 0.7.x/65
4.5.1 建立Eclipse項目/65
4.5.2 修改編譯錯誤代碼/65
4.5.3 新增Schema線上定義功能/69
4.5.4 功能驗證/70
4.6 本章小結/71
第5章 Cassandra的集群機制/73
5.1 一致性哈希/74
5.1.1 理解一致性哈希/74
5.1.2 一致性哈希在Cassandra中的套用/77
5.2 Gossip:集群節點之間的通信協定/81
5.2.1 FailureDetector/82
5.2.2 Gossiper/83
5.3 集群的數據備份機制/88
5.3.1 EndpointSnitch/88
5.3.2 ReplicationStrategy/91
5.4 集群狀態變化的處理機制/96
5.4.1 StorageLoadBalancer/97
5.4.2 StorageService/98
5.4.3 MigrationManager/99
5.5 本章小結/99
第6章 Cassandra的內部數據存儲結構/101
6.1 Cassandra中的數據存放規則/102
6.2 Commilog/102
6.3 Memtable/103
6.4 SSTable/105
6.4.1 Filter檔案/105
6.4.2 Index檔案/107
6.4.3 Data檔案/109
6.4.4 Statistics檔案/113
6.5 系統表空間/113
6.6 本章小結/114
第7章 Cassandra的數據更新機制/115
7.1 數據更新流程/116
7.2 集群數據更新策略/116
7.2.1 ANY/120
7.2.2 ONE/121
7.2.3 QUORUM/121
7.2.4 LOCAL_QUORUM/121
7.2.5 EACH_QUORUM/121
7.2.6 ALL/121
7.3 二級索引/122
7.3.1 為什麼需要二級索引/122
7.3.2 Cassandra二級索引更新過程/123
7.4 本章小結/124
第8章 Cassandra的數據讀取機制/125
8.1 數據讀取流程/126
8.1.1 弱讀取/126
8.1.2 強讀取/128
8.2 集群數據讀取策略/131
8.2.1 ONE/132
8.2.2 QUORUM/132
8.2.3 LOCAL_QUORUM/132
8.2.4 EACH_QUORUM/132
8.2.5 ALL/133
8.3 讀修復/133
8.4 數據快取/134
8.4.1 RowCache/134
8.4.2 KeyCache/134
8.5 二級索引/135
8.6 本章小結/135
第9章 Cassandra的數據壓縮機制/137
9.1 為什麼要進行數據壓縮/138
9.2 如何控制數據壓縮/138
9.3 數據壓縮流程/139
9.4 維護Cassandra中的數據/143
9.4.1 數據清理壓縮/143
9.4.2 數據一致性校驗壓縮/144
9.5 本章小結/144
第10章 Cassandra的啟動流程/145
10.1 Cassandra啟動腳本/146
10.2 Cassandra啟動流程/149
10.2.1 配置log4j/150
10.2.2 讀取校驗配置檔案信息/150
10.2.3 載入所有的數據檔案/152
10.2.4 修複數據/154
10.2.5 啟動Gossiper服務/155
10.2.6 判斷是否需要進行Bootstrap操作/156
10.2.7 監聽Thrift連線埠,提供Thrift服務/157
10.3 本章小結/157
第11章 在分散式環境中使用的Cassandra/159
11.1 在Linux環境中搭建與使用Cassandra集群/160
11.1.1 配置JRE/160
11.1.2 部署Cassandra執行檔/161
11.1.3 修改Cassandra配置檔案/162
11.1.4 啟動Cassandra/163
11.2 Cassandra運行配置項詳解/166
11.3 Cassandra集群的運行和維護/175
11.3.1 查看集群的運行情況/176
11.3.2 添加節點/179
11.3.3 刪除節點/181
11.3.4 移動節點/183
11.3.5 數據維護/185
11.4 本章小結/187
第12章 Cassandra與Hadoop的整合/189
12.1 Hadoop快速入門/190
12.1.1 Hadoop簡介/190
12.1.2 HDFS/192
12.1.3 Map/Reduce/192
12.1.4 配置單機版Hadoop/194
12.1.5 編寫Map/Reduce程式/195
12.2 為什麼要整合Cassandra與Hadoop/200
12.3 使用Map/Reduce導入數據到Cassandra中/200
12.4 將Cassandra中的數據作為Map/Reduce輸入/205
12.5 本章小結/209
第13章 Cassandra最佳實踐/211
13.1 避免Cassandra自身的限制/212
13.1.1 不要盲目使用Super Column/212
13.1.2 硬碟的容量大小限制/212
13.1.3 注意系統大小限制/212
13.2 數據壓縮策略/213
13.3 使用高級的客戶端/213
13.3.1 Pycassa/213
13.3.2 Hector/215
13.3.3 FluentCassandra/218
13.3.4 Cassandra/220
13.3.5 phpcassa/221
13.4 負載均衡/222
13.4.1 隨機選取/222
13.4.2 快取集群信息/222
13.5 謹慎使用二級索引/223
13.6 通過JMX監測Cassandra/223
13.7 調整JVM啟動參數/229
13.8 使用適合的系統配置參數/231
13.9 本章小結/232
附錄A 在Eclipse中修改Cassandra原始碼/233
附錄B CassSeller代碼/243
附錄C CassSeller-0.7代碼/243
作者簡介
郭鵬,國內Cassandra領域的先驅者和實踐者。資深軟體開發工程師,擅長分散式應用程式的開發和使用,時間經驗極其豐富。一直致力於Cassandra、Hadoop、Hive、MongoDB等分散式套用的底層實現原理的研究和探索,對分散式資料庫和數據倉庫也有深刻而獨到的理解。曾任阿里巴巴數據倉庫開發工程師,參與設計和開發了多個基於Cassandra和Hadoop的大型套用。現供職於盛大線上,參與Hadoop計算存儲平台的搭建與實施。活躍於開源技術社區,是部落格園的推薦部落格,也是CSDN的部落格專家,熱衷於與網友分享自己的心得和體會,深受社區歡迎。