Cassandra實戰

Cassandra實戰

《Cassandra實戰 》是機械工業出版社 出版的圖書。

基本信息

內容簡介

Cassandra實戰

《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伺服器配置全程實錄》

作者簡介

郭鵬,國內Cassandra領域的先驅者和實踐者。資深軟體開發工程師,擅長分散式應用程式的開發和使用,時間經驗極其豐富。一直致力於Cassandra、Hadoop、Hive、MongoDB等分散式套用的底層實現原理的研究和探索,對分散式資料庫和數據倉庫也有深刻而獨到的理解。曾任阿里巴巴數據倉庫開發工程師,參與設計和開發了多個基於Cassandra和Hadoop的大型套用。現供職於盛大線上,參與Hadoop計算存儲平台的搭建與實施。活躍於開源技術社區,是部落格園的推薦部落格,也是CSDN的部落格專家,熱衷於與網友分享自己的心得和體會,深受社區歡迎。

目錄

前言

第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.3quorum/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

相關詞條

相關搜尋

熱門詞條

聯絡我們