關(guān)于我們
書單推薦
新書推薦
|
Cassandra權(quán)威指南
本書共分為十四章,內(nèi)容包括:超越關(guān)系型數(shù)據(jù)庫,Cassandra概述,安裝Cassandra,Cassandra查詢語言,數(shù)據(jù)建模,Cassandra架構(gòu),配置Cassandra,客戶端,讀寫數(shù)據(jù),監(jiān)控,維護,性能調(diào)優(yōu),安全,部署和集成。
為什么選擇Apache Cassandra? Apache Cassandra是一個免費、開源的分布式數(shù)據(jù)存儲系統(tǒng),與關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(relational database management systems,RDBMS)截然不同。Cassandra最初是在2009年1月作為Apache的一個孵化器項目啟動的。不久,以Apache Cassandra項目主席Jonathan Ellis為首的提交者發(fā)布了Cassandra 0.3,并在此之后穩(wěn)定不斷地發(fā)布新的小版本。Cassandra已經(jīng)被Web領(lǐng)域的眾多巨頭用于生產(chǎn)環(huán)境,包括Facebook、Twitter和Netflix。Cassandra之所以越來越受到歡迎,很大程度上是因為它提供的出色的技術(shù)特性。它具有持久性、無縫可擴展性,以及可調(diào)一致性,可以非常快地執(zhí)行寫操作,可以存儲數(shù)百TB的數(shù)據(jù),而且是去中心化的和對稱的,所以不存在單點失效問題。此外,它還是高度可用的,提供了一個基于Cassandra查詢語言(Cassandra Query Language,CQL)的數(shù)據(jù)模型。 本書的讀者對象 這本書適用各類讀者,對以下讀者會非常有用。 ? 大規(guī)模、高容量應(yīng)用(比如Web 2.0社交應(yīng)用或電子商務(wù)網(wǎng)站)的開發(fā)人員。 ? 應(yīng)用架構(gòu)師或數(shù)據(jù)架構(gòu)師,需要了解有哪些高性能、去中心化、彈性數(shù)據(jù)庫選擇。 ? 目前使用標(biāo)準(zhǔn)關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫管理員或開發(fā)人員,需要了解如何實現(xiàn)容錯且最終一致的數(shù)據(jù)庫。 ? 希望了解Cassandra及相關(guān)列式數(shù)據(jù)庫的優(yōu)勢(和不足)的管理者,來幫助做出有關(guān)技術(shù)戰(zhàn)略的決策。 ? 正在設(shè)計Cassandra或其他非關(guān)系型數(shù)據(jù)庫相關(guān)項目的學(xué)生、分析師或研究人員。 這本書是一本技術(shù)指南。在很多方面,Cassandra代表了一種考慮數(shù)據(jù)的新思。過去15~20年間獲得專業(yè)技能的很多開發(fā)人員非常精通用純粹的關(guān)系或面向?qū)ο蠓绞絹砜紤]數(shù)據(jù)。Cassandra的數(shù)據(jù)模型則完全不同,開始時可能很難理解,特別是有些人已經(jīng)對數(shù)據(jù)庫是什么(以及應(yīng)該是什么)有了先入為主的想法,尤其他們可能難以接受。 使用Cassandra并不意味著你必須是一名Java開發(fā)人員。不過,Cassandra是用Java寫的,所以如果要深入分析源代碼,扎實地理解Java非常重要。雖然并不嚴(yán)格要求懂Java,但這有助于你更好地理解異常、了解如何構(gòu)建源代碼,以及如何使用一些流行的客戶端。本書中的很多例子都是用Java寫的。不過,根據(jù)訪問Cassandra所用的接口,完全可以采用多種語言來使用Cassandra,包括C#、Python、node.js、PHP和Ruby。 最后,假設(shè)讀者已經(jīng)了解Web是如何工作的,能夠使用集成開發(fā)環(huán)境(IDE),并對數(shù)據(jù)驅(qū)動應(yīng)用的典型問題有所了解。你可能是一個經(jīng)驗豐富的開發(fā)人員或管理員,不過有時會遇到Cassandra世界里使用的一些不太熟悉的工具。比如Cassandra使用Apache Ant構(gòu)建,另外可以通過Git獲得Cassandra源代碼。有時候我們認(rèn)為你可能需要做一些自己的設(shè)置才能運行某些例子,在這種情況下我們會特別說明。 本書的主要內(nèi)容 在合理的范圍內(nèi),本書把各章設(shè)計作為獨立的指南。對于一本關(guān)于Cassandra的書來說,這一點很重要,因為讀者可能水平各異,而且技術(shù)變化很快。借用軟件領(lǐng)域的一個說法,這本書設(shè)計為“模塊化”的。如果你剛接觸Cassandra,可以按順序閱讀;如果你已經(jīng)過了入門階段,也可以在后面的章節(jié)中找到你需要的內(nèi)容,每一章都可以作為一個獨立的指南來閱讀。 本書組織如下: 第1章,超越關(guān)系型數(shù)據(jù)庫 這一章將回顧了獲得極大成功的關(guān)系型數(shù)據(jù)庫的歷史,并介紹非關(guān)系型數(shù)據(jù)庫技術(shù)(如Cassandra)的蓬勃興起。 第2章,Cassandra簡介 這一章介紹Cassandra,并討論它有哪些讓人激動和不同尋常的地方,它來自哪里,另外有哪些優(yōu)點。 第3章,安裝Cassandra 這一章會帶著你安裝和運行Cassandra,并嘗試它的一些基本特性。 第4章,Cassandra查詢語言 這一章介紹Cassandra的數(shù)據(jù)模型,重點強調(diào)它與傳統(tǒng)關(guān)系模型的區(qū)別。我們還會討論如何用Cassandra查詢語言(CQL)表示這個模型。 第5章,數(shù)據(jù)建模 這一章介紹Cassandra中數(shù)據(jù)建模的原則和過程。我們會分析一個大家熟悉的領(lǐng)域,來建立一個實際可用的模式。 第6章,Cassandra架構(gòu) 這一章將幫助你了解讀寫操作時發(fā)生了什么,另外Cassandra如何實現(xiàn)它的一些突出特點,如持久性和高可用性。我們會深入地理解一些更復(fù)雜的內(nèi)部工作方式,如Gossip協(xié)議、提示移交、讀修復(fù)、Merkle樹等。 第7章,配置Cassandra 這一章會介紹如何指定分區(qū)器、副本放置策略和snitch。我們會建立一個集群,并查看不同配置選擇的影響。 第8章,客戶端 面向不同的語言有很多不同的客戶端,包括Java、Python、node.js、Ruby、C#和PHP,這些客戶端對Cassandra的底層API提供了抽象。我們會幫助你了解常用驅(qū)動程序的特性。 第9章,讀寫數(shù)據(jù) 在前面章節(jié)的基礎(chǔ)上,我們將學(xué)習(xí)Cassandra“在底層”是如何讀寫數(shù)據(jù)的。我們還會討論批處理(batch)、輕量級事務(wù)和分頁(paging)等概念。 第10章,監(jiān)控 一旦建立和運行集群,可能需要監(jiān)控集群的使用情況、內(nèi)存模式和線程模式,了解它的一般活動。Cassandra內(nèi)置有一個功能豐富的Java管理擴展(JMX)接口,可以用來監(jiān)控所有這些方面及其他一些方面。 第11章,維護 利用服務(wù)器自帶的一些工具可以讓Cassandra集群的持續(xù)維護變得更為容易。我們會介紹如何退服一個節(jié)點、實現(xiàn)集群的負(fù)載平衡、獲得統(tǒng)計信息,以及完成其他日常的運維任務(wù)。 第12章,性能調(diào)優(yōu) Cassandra最突出的特性之一就是它的速度非?,不過還有很多方面可以進一步優(yōu)化以提高性能,包括內(nèi)存設(shè)置、數(shù)據(jù)存儲、硬件選擇、緩存,以及緩沖區(qū)大小。 第13章,安全性 NoSQL技術(shù)經(jīng)常因為安全性方面的短板而遭到詬病。好在Cassandra提供了認(rèn)證、授權(quán)和加密特性,我們將在這一章學(xué)習(xí)如何配置這些特性。 第14章,部署和集成 在本書的最后,我們會討論規(guī)劃集群部署的注意事項,包括使用Amazon、Microsoft和Google等提供商的云部署。這一章還會介紹經(jīng)常與Cassandra結(jié)合使用來擴展功能的諸多技術(shù)。 本書使用的Cassandra版本 本書使用了Cassandra 3.X版本系列,另外使用了DataStax Java Driver 3.0。討論2.0及以后版本增加的新特性時,我們會給出新增該特性的相應(yīng)版本號,方便使用較早版本的讀者考慮是否升級。 第二版新增內(nèi)容 本書第一版是關(guān)于Cassandra出版的第一本書,多年來一直得到業(yè)界的高度認(rèn)可。不過,2010年以來,Cassandra格局已經(jīng)發(fā)生了顯著變化,不論從技術(shù)本身來講,還是從開發(fā)和支持這項技術(shù)的社區(qū)來說,都有了巨大變化。為了讓這本書跟上Cassandra的最新發(fā)展,我們做了以下重要更新: 歷史感 第一版是針對2010年發(fā)布的0.7版撰寫的。到2016年,我們已經(jīng)升級到3.X系列。最重要的變化是引入了CQL,而廢棄了之前的Thrift API。另外增加了一些新的架構(gòu)特性,包括二級索引、物化視圖和輕量級事務(wù)。我們在第2章提供了一個簡明的版本歷史,幫助你了解這些變化。書中介紹新特性時,我們通常會指出這些特性是在哪些版本中新增的。 助力開發(fā)人員 這些年來,Cassandra的相關(guān)開發(fā)和測試有了很大變化,它引入了CQL shell (cqlsh),并逐步將社區(qū)開發(fā)的客戶端替換為DataStax提供的驅(qū)動程序。我們將在第3章和第4章深入地介紹cqlsh,并在第8章和第9章討論這些驅(qū)動程序。在第9章還提供了Cassandra讀路徑和寫路徑的一個擴展描述,加深你對內(nèi)部機制的理解,并幫助你了解不同決策帶來的影響。 輔助Cassandra運維 隨著越來越多的個人和組織在生產(chǎn)環(huán)境中部署Cassandra,有關(guān)生產(chǎn)環(huán)境中遇到的挑戰(zhàn)以及應(yīng)對這些挑戰(zhàn)的最佳實踐知識庫在日益壯大。我們增加了幾章全新的內(nèi)容,包括關(guān)于安全性的第13章及關(guān)于部署和集成的第14章,另外大大拓展了有關(guān)監(jiān)控、維護和性能調(diào)優(yōu)的章節(jié)(第10~12章),以體現(xiàn)這些新的智慧結(jié)晶。 排版約定 本書使用以下排版約定: 斜體(Italic) 表示新術(shù)語、URL、email地址、文件名和文件擴展名。 定寬字體(Constant width) 表示程序代碼清單,以及在段落中用來指示程序元素,如變量或函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。 定寬粗體(Constant width bold) 表示要由用戶鍵入的命令或其他文字。 定寬斜體(Constant width italic) 表示該文本要替換為用戶提供的值或由上下文確定的值。 使用代碼示例 本書中的代碼示例可以從https://github.com/jeffreyscarpenter/cassandra-guide下載。 本書的目的是幫助你完成工作。一般來講,你可以在你的程序和文檔中使用這些代碼,不需要聯(lián)系我們來得到許可,除非你直接復(fù)制了大部分的代碼。 例如,如果你在編寫一個程序,使用了本書中的多段代碼,這并不需要得到許可。但是出售或發(fā)行O'Reilly書示例代碼光盤則需要得到許可;卮饐栴}時如果引用了這本書的文字和示例代碼,這不需要得到許可。但是如果你的產(chǎn)品的文檔借用了本書中的大量示例代碼,則需要得到許可。 我們希望但不嚴(yán)格要求標(biāo)明引用出處。引用信息通常包括書名、作者、出版商和ISBN。例如 “Cassandra: The Definitive Guide, Second Edition, by Jeff Carpenter. Copyright 2016 Jeff Carpenter, 978-1-491-93366-4”。 如果你認(rèn)為你在使用代碼示例時超出了合理使用范圍或者上述許可范圍,可以隨時聯(lián)系我們:permissions@oreilly.com。 Safari ®圖書在線 Safari圖書在線(www.safaribooksonline.com)是一個應(yīng)需而變的數(shù)字圖書館,通過圖書和視頻方式提供世界頂尖作者在技術(shù)和商業(yè)領(lǐng)域積累的專家經(jīng)驗。 技術(shù)專家、軟件開發(fā)人員、Web設(shè)計人員和企業(yè)以及有創(chuàng)意的專業(yè)人員都使用Safari圖書在線作為其主要資源來完成研究、解決問題、深入學(xué)習(xí)和資質(zhì)培訓(xùn)。 Safari圖書在線為機構(gòu)、政府部門和個人提供了多種產(chǎn)品組合和定價程序。 訂閱者可以在一個可以快捷搜索的數(shù)據(jù)庫中訪問多家出版社提供的成千上萬種圖書、培訓(xùn)視頻和正式出版前手稿,如O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology,以及其他數(shù)百家出版公司。關(guān)于Safari圖書在線的更多信息,請訪問我們的在線網(wǎng)站。 聯(lián)系我們 請將關(guān)于本書的意見和問題通過以下地址提供給出版社: 美國: O'Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中國: 北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035) 奧萊利技術(shù)咨詢(北京)有限公司 針對這本書,我們還建有一個網(wǎng)頁,列出了有關(guān)勘誤、示例和其他信息?梢酝ㄟ^以下地址訪問這個頁面:http://bit.ly/cassandra2e。 如果對這本書有什么意見,或者要詢問技術(shù)上的問題,請將電子郵件發(fā)送至: bookquestions@oreilly.com。 要了解關(guān)于我們的圖書、課程、會議和新聞的更多信息,請訪問我們的網(wǎng)站: http://www.oreilly.com。 我們的Facebook: http://facebook.com/oreilly。 我們的Twitter: http://twitter.com/oreillymedia。 我們的YouTube: http://www.youtube.com/oreillymedia。 致謝 我們要感謝很多非常優(yōu)秀的人幫助這本書得以面世。 感謝我們的技術(shù)審校們:Stu Hood、Robert Schneider和Gary Dusbabek,你們?yōu)榈谝话尕暙I了很有見地的評論,另外感謝Andrew Baker、Ewan Elliot、Kirk Damron、Corey Cole、Jeff Jirsa和Patrick McFadin審閱了第二版。Chris Judson的反饋對第14章的完善起到了關(guān)鍵作用。 感謝Jonathan Ellis和Patrick McFadin為這本書的第一版和第二版作序。還要感謝Patrick對第14章Spark集成一節(jié)的貢獻。 感謝我們的編輯Mike Loukides和Marie Beaugureau,感謝他們一直以來的支持,讓這本書變得更好。 Jeff還要感謝Eben給予的信任,給他這個機會來更新這樣一本頗具盛譽的經(jīng)典著作,另外感謝Eben自始至終的鼓勵。 最后,對Cassandra做出了貢獻的很多了不起的開發(fā)人員也給了我們很大啟發(fā)。向你們致敬,感謝你們建立了這樣一個優(yōu)秀而強大的數(shù)據(jù)庫。
Jeff Carpenter是Choice Hotels International的系統(tǒng)架構(gòu)師,在酒店和國防工業(yè)領(lǐng)域積累了20多年的經(jīng)驗。Jeff的興趣主要包括SOA/微服務(wù)、構(gòu)建大規(guī)模系統(tǒng)架構(gòu)和數(shù)據(jù)架構(gòu)。 Eben Hewitt是Choice Hotels International的首席技術(shù)官,這是全球ZZ大酒店集團之一。他著有多本有關(guān)架構(gòu)、分布式系統(tǒng)和編程的書。 序一1 序二3 前言5 第1章 超越關(guān)系型數(shù)據(jù)庫15 關(guān)系型數(shù)據(jù)庫有什么問題?15 關(guān)系型數(shù)據(jù)庫速覽20 網(wǎng)絡(luò)規(guī)模28 NoSQL的興起29 小結(jié)31 第2章Cassandra概述32 Cassandra電梯間演講32 Cassandra從哪里來?45 Cassandra適合我的項目嗎?53 參與其中54 小結(jié)56 第3章 安裝Cassandra57 安裝Apache發(fā)布版本57 從源碼構(gòu)建60 運行Cassandra62 其他Cassandra發(fā)布版本67 運行CQL Shell68 小結(jié)77 第4章Cassandra查詢語言78 關(guān)系型數(shù)據(jù)模型78 Cassandra的數(shù)據(jù)模型79 CQL類型88 二級索引99 小結(jié)101 第5章 數(shù)據(jù)建模102 概念數(shù)據(jù)建模102 RDBMS設(shè)計103 邏輯數(shù)據(jù)建模109 物理數(shù)據(jù)建模115 評估和改進121 定義數(shù)據(jù)庫模式125 小結(jié)127 第6章Cassandra架構(gòu)129 數(shù)據(jù)中心和機架129 Gossip和故障檢測130 snitch感應(yīng)策略133 環(huán)和令牌134 虛擬節(jié)點135 分區(qū)器136 復(fù)制策略137 一致性級別138 查詢和協(xié)調(diào)器節(jié)點139 Memtable、SSTable和提交日志140 緩存142 提示移交143 輕量級事務(wù)和Paxos144 墓碑146 布隆過濾器146 合并147 逆熵、修復(fù)和Merkle樹149 分階段事件驅(qū)動架構(gòu) 151 管理器和服務(wù)152 系統(tǒng)鍵空間155 小結(jié)158 第7章 配置Cassandra159 Cassandra集群管理器159 創(chuàng)建集群160 種子節(jié)點164 分區(qū)器164 Snitch167 節(jié)點配置170 向集群增加節(jié)點174 動態(tài)加入環(huán)176 復(fù)制策略177 小結(jié)180 第8章 客戶端181 Hector、Astyanax和其他遺留客戶端181 DataStax Java驅(qū)動程序182 DataStax Python Driver205 DataStax Nodejs Driver207 DataStax Ruby Driver208 DataStax C# Driver208 DataStax C/C++ Driver209 DataStax PHP Driver211 小結(jié)211 第9章 讀寫數(shù)據(jù)212 寫212 Cassandra寫路徑215 讀225 刪除243 小結(jié)244 第10章 監(jiān)控245 日志245 用JMX監(jiān)控Cassandra250 Cassandra的MBean258 用nodetool監(jiān)控269 小結(jié)276 第11章 維護277 健康檢查277 基本維護278 移動令牌286 增加節(jié)點286 處理節(jié)點故障290 升級Cassandra295 備份和恢復(fù)297 SSTable工具302 維護工具303 小結(jié)306 第12章 性能調(diào)優(yōu)307 管理性能307 緩存315 Memtable318 提交日志319 SSTable321 提示移交322 合并323 并發(fā)和線程326 網(wǎng)絡(luò)和超時327 JVM設(shè)置329 使用cassandra-stress332 小結(jié)336 第13章 安全337 認(rèn)證和授權(quán)338 加密346 JMX安全性352 小結(jié)354 第14章 部署和集成355 規(guī)劃集群部署355 云部署360 集成365 小結(jié)374
你還可能感興趣
我要評論
|