內容簡介
如果不用考慮可伸縮性,想象一下你能做些什麼?在這本實踐指南中,你將會瞭解到Cassandra數據庫管理係統是如何在為多個數據中心提供高可用服務的同時處理上百TB的數據。擴充後的第二版已經更新到瞭Cassandra 3.0,書中給齣瞭各種技術細節以及實例,當你將Cassandra投入實際生産環境時,這些內容都是必不可少的。
作者Jeff Carpenter和Eben Hewitt闡述瞭Cassandra非關係型設計的優勢,著重介紹瞭其數據模型。
《Cassandra**指南(第2版 影印版)》嚮開發者、DBA、正在尋找數據庫的可擴展性解決方案的應用架構師展示瞭Cassandra的速度和靈活性。
作者簡介
Jeff Carpenter,精品國際酒店集團(Choice Hotels International)的一名係統架構師,在服務業和國防工業有著20年的從業經驗。他的興趣包括SOA/微服務、大規模係統架構設計以及數據架構。
EbenHewitt是精品國際酒店集團(世界大酒店之一)的首席技術官。
他還是好幾本書籍的作者,題材涉及係統架構、分布式係統以及編程。
內頁插圖
目錄
Foreword
Foreword
Preface
1.Beyond Relational Databases
What's Wrong with Relational Databases?
A Quick Review of Relational Databases
RDBMSs: The Awesome and the Not-So-Much
Web Scale
The Rise of NoSQL
Summary
2.Introducing Cassandra
The Cassandra Elevator Pitch
Cassandra in 50 Words or Less
Distributed and Decentralized
Elastic Scalability
High Availability and Fault Tolerance
Tuneable Consistency
Brewer's CAP Theorem
Row-Oriented
High Performance
Where Did Cassandra Come From?
Release History
Is Cassandra a Good Fit for My Project?
Large Deployments
Lots of Writes, Statistics, and Analysis
Geographical Distribution
Evolving Applications
Getting Involved
Summary
3.Installing Cassandra
Installing the Apache Distribution
Extracting the Download
What's In There?
Building from Source
Additional Build Targets
Running Cassandra
On Windows
On Linux
Starting the Server
Stopping Cassandra
Other Cassandra Distributioaas
Running the CQL Shell
Basic cqlsh Commands
cqlsh Help
Describing the Environment in cqlsh
Creating a Keyspace and Table in cqlsh
Writing and Reading Data in cqlsh
Summary
4.The Cassandra Query Language
The Relational Data Model
Cassandra's Data Model
Clusters
Keyspaces
Tables
Columns
CQL Types
Numeric Data Types
Textual Data Types
Time and Identity Data Types
Other Simple Data Types
Collections
User-Defined Types
Secondary Indexes
Summary
……
前言/序言
Cassandra was open-sourced by Facebook in July 2008. This original version of Cassandra was written primarily by an ex-employee from Amazon and one from Microsoft. It was strongly influenceyd by Dynamo, Amazon's pioneering distributed key/value database. Cassandra implements a Dynamo-style replication model with no single point of failure, but adds a more powerful "column family" data model.
I became involved in December of that year, when Rackspace asked me to build them a scalable database. This was good timing, because all of today's important open source scalable databases were available for evaluation, Despite initially having only a single major use case, Cassandra's underlying architecture was the strongest, and I
directed my efforts toward improving the code and building a community.
Cassandra was accepted into the Apache Incubator, and by the time it graduated in March 2010, it had become a true open source success story, with committers from Rackspace, Digg, Twitter, and other companies that wouldn't have written their own
database from scratch, but together built something important.
Today's Cassandra is much more than the early system that powered (and still powers) Facebook's inbox search; it has become "the hands-down winner for transaction
processing performance:' to quote Tony Bain, with a deserved reputation for reliability and performance at scale.
As Cassandra matured and began attracting more mainstream users, it became clear that there was a need for commeraal support; thus, Matt Pfeil and I cofounded Riptano in April 2010. Helping drive Cassandra adoption has been very rewarding, espeaally seeing the uses that don't get discussed in public.
Another need has been a book like this one. Like many open source projects, Cassandra's documentation has historically been weak. And even when the documentation
ultimately improves, a book-length treatment like this will remain useful.
數據庫的未來:分布式、可擴展、高性能的基石 在當今數據爆炸式增長的時代,傳統的關係型數據庫已經難以滿足日益增長的業務需求。海量數據的存儲、高並發的讀寫、全球範圍的可用性,這些挑戰迫使我們尋找更強大的解決方案。分布式數據庫應運而生,而 Cassandra,作為其中的佼佼者,正以前所未有的姿態改變著我們處理和利用數據的方式。 Cassandra:一個時代的開端 Apache Cassandra 是一個開源的、分布式、寬列存儲數據庫,它由 Facebook 開發並於 2008 年開源,隨後成為 Apache 頂級項目。Cassandra 的設計初衷是為瞭解決大規模數據存儲和高可用性問題,其卓越的性能和可擴展性使其迅速在業界獲得瞭廣泛的應用,成為許多全球性互聯網公司和企業的首選數據庫解決方案。 核心設計理念:去中心化與最終一緻性 Cassandra 的核心魅力在於其去中心化的架構。不同於傳統的單點故障的集中式數據庫,Cassandra 采用瞭一種無主節點(masterless)的設計。這意味著集群中的所有節點都扮演著相同的角色,沒有一個中心服務器來協調所有操作。這種設計帶來瞭極高的可用性,即使部分節點發生故障,整個集群仍然能夠對外提供服務。 另一個關鍵的設計理念是最終一緻性(eventual consistency)。在分布式係統中,要實現強一緻性(strong consistency)往往會犧牲可用性和性能。Cassandra 為瞭追求極緻的可用性和性能,選擇瞭最終一緻性模型。這意味著在某個寫操作完成後,係統會盡力將數據同步到所有副本,但在某些短暫的時間窗口內,不同的節點可能查詢到稍有延遲的數據。然而,隨著時間的推移,所有副本最終會達到一緻。對於許多需要高吞吐量和低延遲的應用場景,例如實時數據流、IoT 設備數據收集等,最終一緻性是完全可以接受的,甚至是一種優勢。 為何選擇 Cassandra? 卓越的可擴展性 (Scalability): Cassandra 的架構天生支持水平擴展。當數據量增長或流量增加時,隻需簡單地嚮集群中添加更多的節點,係統就能自動地將數據分布到新節點上,並無縫地接管流量。這種綫性的可擴展性使得 Cassandra 能夠應對 TB 甚至 PB 級彆的數據,以及每秒百萬級彆的讀寫請求。 高可用性 (High Availability): Cassandra 的去中心化架構消除瞭單點故障。數據會在集群中被復製到多個節點上,並分布在不同的機架甚至不同的數據中心。即使某個節點、機架甚至整個數據中心發生故障,係統仍然能夠正常運行,保證數據的可用性。 高性能 (Performance): Cassandra 針對寫密集型負載進行瞭優化。其 LSM-tree (Log-Structured Merge-tree) 的存儲引擎能夠以極高的效率處理寫入操作,並將後續的讀取操作推遲到內存中或者優化後的磁盤結構中。這使得 Cassandra 在寫入吞吐量方麵錶現齣色,特彆適閤那些需要快速吞吐大量數據的應用。 靈活性 (Flexibility): Cassandra 采用寬列存儲(wide-column store)模型。與傳統的行式存儲或文檔存儲不同,寬列存儲允許每一行擁有不同的列,且列的數量可以非常多。這種動態的模式(schema-less 或 schema-on-read)為開發提供瞭極大的靈活性,特彆是在數據結構經常變化的場景下,能夠快速適應需求變化。 多數據中心部署 (Multi-Data Center Deployment): Cassandra 原生支持跨多個數據中心的部署,這使得企業可以在全球範圍內建立具有容災能力的分布式數據庫係統。用戶可以通過配置副本策略,將數據同步到不同的地理位置,從而在主數據中心不可用時,仍然能夠保證服務的連續性。 Cassandra 的技術亮點 Gossip 協議: Cassandra 使用 Gossip 協議來維護集群節點之間的狀態信息。每個節點定期與其他節點交換信息,從而快速傳播集群的變化,如節點上綫、下綫等,確保集群狀態的一緻性。 Hinted Handoff: 當一個節點暫時無法響應時,其他節點會為它存儲寫入的提示(hints),待該節點恢復後,再將這些寫入傳遞給它。這進一步增強瞭寫操作的成功率和可用性。 Read Repair: Cassandra 會在讀取數據時主動檢查副本的一緻性。如果發現不同副本上的數據不一緻,它會在後颱進行修復,從而確保數據的最終一緻性。 Tunable Consistency (可調一緻性): Cassandra 允許開發者在每次讀寫操作時,根據業務需求選擇不同的一緻性級彆 (Consistency Level)。例如,可以選擇 QUORUM(需要大多數副本確認寫入或讀取成功),或 ONE(隻需要一個副本確認),這樣可以在性能、可用性和一緻性之間進行權衡。 CQL (Cassandra Query Language): Cassandra 提供瞭一種類似 SQL 的查詢語言,稱為 CQL。這使得熟悉 SQL 的開發者能夠更容易地上傳 Cassandra,降低瞭學習門檻。CQL 提供瞭豐富的數據操作和查詢功能,支持索引、分頁等特性。 Cassandra 的應用場景 Cassandra 的強大能力使其在眾多領域有著廣泛的應用: 大規模用戶數據管理: 社交媒體平颱、遊戲平颱等需要存儲海量用戶畫像、社交關係、遊戲進度等信息。 實時分析與監控: 物聯網設備數據、日誌數據、點擊流數據等需要被實時采集、存儲和分析。 推薦係統: 存儲和查詢用戶偏好、商品信息,以支持個性化推薦。 時序數據存儲: 存儲傳感器數據、股票行情、係統性能指標等隨時間變化的數據。 內容管理係統: 存儲和管理大量的媒體文件、文檔等。 物聯網 (IoT) 數據平颱: 收集和處理來自海量物聯網設備的海量傳感器數據。 支付與交易係統: 處理高並發的交易請求,要求高可用性和低延遲。 Cassandra 生態係統 Cassandra 擁有一個活躍且不斷壯大的生態係統。除瞭核心的數據庫本身,還有一係列相關的工具和技術: 數據遷移工具: 幫助用戶將現有數據遷移到 Cassandra。 監控和管理工具: 提供集群性能監控、故障診斷、性能調優等功能。 驅動程序: 支持多種編程語言,方便開發者集成 Cassandra 到應用程序中。 與大數據生態的集成: Cassandra 可以與 Hadoop、Spark、Kafka 等大數據處理框架無縫集成,構建完整的數據解決方案。 未來的展望 隨著企業數字化轉型的深入,以及對數據價值挖掘需求的不斷增長,分布式數據庫的重要性將愈發凸顯。Cassandra 以其獨特的設計理念、強大的性能和靈活的擴展性,已經證明瞭其在應對海量數據和高並發挑戰方麵的能力。無論是初創企業還是大型機構,在構建下一代數據平颱時,Cassandra 都將是一個值得深入研究和選擇的解決方案。它代錶著數據庫領域的一種未來趨勢,一種能夠支撐起現代互聯網應用和數字經濟的堅實基石。