Apache Cassandra 5.0.9 介绍与选型指南
Apache Cassandra 5.0.9 认知与选型:分布式宽列 NoSQL 数据库的架构、特性、官方示例与同类对比(官方资料溯源,查询日期 2026-10-18)
Apache Cassandra 5.0.9 介绍与选型指南
目标:基于官方文档、官方发行目录与项目仓库联网溯源(查询日期 2026-10-18),完成 Apache Cassandra 最新稳定版的认知与选型评估。本文属认知篇(A1),关键论断均随文标注来源,不做本地安装实测;安装部署实测请参见本专栏 B1 安装指南。
一、信息基准
1.1 查询日期与版本依据
- 查询日期:2026-10-18(本文所有版本号、发布状态与活跃度数据均以该日联网实查为准)。
- 本次介绍版本:Apache Cassandra 5.0.9(5.0 系列当前最新稳定 patch)。
- 版本依据(来源:Apache 官方发行目录 downloads.apache.org/cassandra/,2026-10-18 实查):
- 当前在架版本:5.0.9(最新稳定)、4.1.12、4.0.21、3.11.19、3.0.32(各维护分支最新 patch)。
- 5.0.9 目录同步在架时间为 2026-08-07。
- 另有 6.0-alpha2 开发预览版在架,属非稳定预览,不在本文介绍范围。
- 版本状态说明(来源:cassandra.apache.org 下载页与官方文档,2026-10-18 实查):5.0 为当前主推稳定大版本,4.1/4.0 处于维护期,3.x 已接近维护尾声。
1.2 官方来源清单
| 来源 | 用途 | 地址 |
|---|---|---|
| 项目官网 | 定位、下载、新闻 | https://cassandra.apache.org/ |
| 官方文档 5.0 | 架构与特性依据 | https://cassandra.apache.org/doc/5.0/ |
| CQL 语言文档 | 语法与示例 | https://cassandra.apache.org/doc/latest/cql/ |
| 官方发行目录 | 版本在架与校验文件 | https://downloads.apache.org/cassandra/ |
| 官方 Git 仓库 | 代码与发布 tag | https://github.com/apache/cassandra |
| Apache 项目页 | 项目状态与发版记录 | https://projects.apache.org/project.html?cassandra |
| 官方 JIRA | 变更与缺陷记录 | https://issues.apache.org/jira/projects/CASSANDRA |
二、软件概述
本文介绍的是 Apache Cassandra 5.0.9:一个开源的分布式宽列存储 NoSQL 数据库,采用 Apache License 2.0 许可,主要使用 Java 编写并运行于 JVM 之上(来源:cassandra.apache.org 与官方 LICENSE 文件,2026-10-18 实查)。
Cassandra 的设计目标是以「无单点故障」的 P2P 集群提供线性可扩展的高写入吞吐与跨数据中心多活能力。其数据模型取自 Google Bigtable 论文(按列族组织的稀疏宽表),分区与复制机制取自 Amazon Dynamo 论文(一致性哈希、最终一致、可调一致性级别),并以类 SQL 的 CQL(Cassandra Query Language)作为主查询接口。项目 2008 年由 Facebook 开源,2009 年进入 Apache 孵化器,2010 年毕业成为 Apache 顶级项目(来源:cassandra.apache.org 项目历史与维基百科条目交叉印证,2026-10-18 实查)。
版本定位方面,5.0 系列是继 4.0(2021-07 GA)之后的大版本,2024-11 发布 GA(来源:Apache Cassandra 官方博客「Apache Cassandra 5.0」,2026-10-18 实查)。相对 4.x,5.0 的标志性变化包括:
- 存储级二级索引 SAI(Storage-Attached Indexes,CEP-21),索引随 SSTable 一同构建,显著改善二级查询效率;
- 向量数据类型与近似最近邻(ANN)相似性检索(CEP-30),面向 RAG 等 AI 应用场景;
- 统一压缩策略 UCS(Unified Compaction Strategy,CEP-19),以空间换 IO 放大、简化压缩配置;
- 移除早已弃用的 Thrift 旧接口,运行时同时支持 Java 11 与 Java 17(17 为生产推荐),并将 ZGC 纳入生产支持范围(以上均来源:cassandra.apache.org 官方博客与 5.0 文档 What's New 章节,2026-10-18 实查)。
三、核心架构
3.1 一致性哈希分区环与虚拟节点
Cassandra 集群在逻辑上是一个一致性哈希环。每行数据按分区键经 Murmur3 哈希映射到 token 区间,从而决定其主副本节点。每个物理节点默认承担 16 个虚拟节点(vnode,5.0 默认配置 num_tokens: 16),使节点增减时数据再平衡粒度更细、负载更均匀(来源:cassandra.apache.org/doc/5.0/architecture/ 与 cassandra.yaml 默认值,2026-10-18 实查)。
3.2 集群通信与元数据管理
节点间通过 gossip 协议(P2P、每秒与至多 3 个节点交换状态)传播存活与负载信息,无需任何中心协调组件;表结构与拓扑元数据同样在节点间同步并持久化,4.0 起该机制完成了对故障注入的系统性加固。集群内不存在主节点、不存在元数据服务器,任意节点均可作为协调者(coordinator)接收客户端请求(来源:cassandra.apache.org/doc/5.0/architecture/overview.html,2026-10-18 实查)。
3.3 复制与可调一致性
- 副本策略:SimpleStrategy(单数据中心)与 NetworkTopologyStrategy(多数据中心,推荐默认),每个分区按复制因子 RF 在环上/每个数据中心内保存 N 份副本。
- 可调一致性:每次读写可指定一致性级别(ONE、QUORUM、LOCAL_QUORUM、ALL、SERIAL 等)。遵循 Dynamo 风格的 W+R>N 原则时(如写 QUORUM + 读 QUORUM),可在最终一致基础上获得强一致读取效果。
- 轻量级事务(LWT):基于 Paxos 的 compare-and-set,为单分区提供线性一致性条件写入,弥补跨行事务的缺失(来源:cassandra.apache.org/doc/5.0/architecture/dynamo.html 与 cql/lwt 文档,2026-10-18 实查)。
3.4 LSM 存储引擎
写入路径为典型 LSM-Tree:commitlog(顺序追加 WAL,保证持久性)→ 内存中的 memtable → 满后刷写为不可变的 SSTable。读取时按 Bloom 过滤器与分区索引定位各 SSTable 后合并;后台 compaction 负责合并 SSTable、回收被删除数据(墓碑)与过期数据。5.0 引入的 UCS 统一压缩策略以参数化方式在空间放大与 IO 放大间折衷,减少针对不同负载的手工选型负担(来源:cassandra.apache.org/doc/5.0/operating/compaction 与 CEP-19,2026-10-18 实查)。
3.5 高可用与数据修复
副本写失败时通过 hinted handoff 记录并在节点恢复后补发;读路径上的 read repair 与周期性 nodetool repair(基于 Merkle 树的反熵修复)负责收敛副本间不一致;多数据中心部署下机架感知的 snitch 决定副本分布,支持按 DC 独立的一致性与容量规划(来源:cassandra.apache.org/doc/5.0/architecture/ 与 operating/repair 文档,2026-10-18 实查)。
3.6 索引体系与向量检索
除主键查询外,Cassandra 提供 SAI 存储级索引(覆盖标量、集合、文本与向量列,索引数据随 SSTable 持久化)与 5.0 新增的向量列(vector 类型)加 ANN 索引,用于语义相似检索。传统二进制实现的老式 secondary index 在 5.0 中继续可用但不再是推荐路径(来源:cassandra.apache.org/doc/5.0/cql/vector 与 CEP-21/CEP-30,2026-10-18 实查)。
四、功能特性
| 功能域 | 说明 | 来源 |
|---|---|---|
| CQL 查询语言 | 类 SQL 语法(DDL/DML/聚合/角色授权),cqlsh 交互工具 | cassandra.apache.org/doc/latest/cql/ |
| 多数据中心多活 | NetworkTopologyStrategy 按 DC 复制,LOCAL_QUORUM 本地强一致 | doc/5.0/architecture |
| 可调一致性 | 每查询一致性级别,一致性/可用性按业务折衷 | doc/5.0/dynamo |
| LWT 轻量事务 | 单分区线性一致 CAS 写入 | cql/lwt |
| SAI 存储级索引 | 5.0 主推的二级索引,标量/集合/文本/向量统一支撑 | CEP-21 |
| 向量相似检索 | vector 类型 + ANN 索引,面向语义搜索 | CEP-30 |
| 安全 | 内置角色与权限(RBAC)、节点间与客户端 TLS、JMX 认证、审计日志 | doc/5.0/security |
| 可观测 | nodetool、virtual tables、JMX metrics 与全量查询日志 | doc/5.0/operating |
| 压缩与压缩策略 | 各类压缩算法(LZ4/Snappy/Deflate/Zstd)与 UCS/TWCS/STCS 压缩策略 | operating/compaction |
| 生态驱动 | Java/Python/Go/Node.js 等官方与社区驱动,协议 CQL Binary v5+ | 官方客户端驱动页 |
💡 说明:上表来源列均为官方文档相对路径,完整域名前缀为 https://cassandra.apache.org/,2026-10-18 实查。
五、快速上手
以下示例引自官方文档《Getting Started — Querying》与 CQL 文档(来源:https://cassandra.apache.org/doc/latest/getting_started/querying.html ,2026-10-18 实查),语法在 5.0.9 中原样适用;本文不做本地实测。
- 建键空间与表(官方原文示例,store.shopping_cart):
CREATE KEYSPACE IF NOT EXISTS store
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}
AND durable_writes = true;
CREATE TABLE IF NOT EXISTS store.shopping_cart (
userid uuid PRIMARY KEY,
item_count int,
last_update timestamp
);
- 写入与读取(官方文档 CQL DML 语法示例风格):
INSERT INTO store.shopping_cart (userid, item_count, last_update)
VALUES (uuid(), 3, toTimestamp(now()));
SELECT item_count, last_update FROM store.shopping_cart
WHERE userid = 5b6962dd-3f90-4c93-8f61-eabfa4a803e2;
- 5.0 新增向量列与相似检索(官方 5.0 向量文档语法风格,来源:https://cassandra.apache.org/doc/5.0/cql/vector.html ):
CREATE TABLE store.comments (
comment_id uuid PRIMARY KEY,
comment_text text,
comment_vector vector<float, 3>
);
SELECT comment_id FROM store.comments
ORDER BY comment_vector ANN OF [0.2, 0.15, 0.3] LIMIT 5;
💡 说明:官方发行目录同时提供 tarball 与 Debian/RPM 仓库安装路径(https://cassandra.apache.org/_/download.html ),本篇不展开安装实测。
六、适用场景与限制
6.1 适用场景
- 写入吞吐优先、按时间追加的海量数据:日志与事件流水、遥测/IoT 设备数据、消息元数据。
- 跨地域多活部署:多地写入、LOCAL_QUORUM 本地低延迟读写。
- 高可用无单点诉求:不允许单点故障、允许最终一致的业务底座。
- 查询模式固定、可按查询建模的 OLTP 型 KV/宽表负载。
- 5.0 之后新增:面向 RAG/推荐召回的向量相似检索(依托 SAI 与 ANN)。
6.2 限制与注意
- 无跨分区 ACID 事务;跨行/跨表一致性仅能靠 LWT(单分区)或应用层补偿实现。
- 数据建模必须「面向查询」设计,反范式与冗余是常态;不提供表间 JOIN 与任意 ad-hoc 分析查询。
- 删除是标记墓碑再由 compaction 回收,高频删除/覆盖写会造成读放大,需要按负载选择压缩策略(如 TWCS 用于时序)。
- 修护与容量规划、GC 与 JVM 调优存在运维门槛;跨版本升级需遵循官方滚动升级路径。
- 官方发行目录在架的 6.0-alpha2 属开发预览,生产选型仍应使用 5.0.x 稳定系列(来源:downloads.apache.org/cassandra/,2026-10-18 实查)。
七、同类选型对比
对比对象选取同为宽列/分布式 KV 存储的 ScyllaDB、Amazon DynamoDB 与 Apache HBase(社区活跃度数据来源:GitHub star 数与维护状态,经第三方徽章服务获取,2026-10-18 实查;版本数据来源:各自官方发布渠道)。
| 维度 | Apache Cassandra 5.0.9 | ScyllaDB | Amazon DynamoDB | Apache HBase |
|---|---|---|---|---|
| 类型定位 | 分布式宽列 NoSQL(自建集群) | Cassandra 兼容的 C++ 重写内核 | 全托管云服务 | 基于 HDFS 的宽列存储 |
| 许可 | Apache-2.0 | AGPL-3.0(开源核心版) | 闭源(商业服务) | Apache-2.0 |
| 开发语言 | Java(JVM) | C++(seastar 框架) | 不公开 | Java(JVM) |
| 社区活跃度 | GitHub stars 约 10k;持续滚动发版 | GitHub stars 约 16k;持续滚动发版 | 无公开仓库(托管服务) | GitHub stars 约 5.6k;持续发版 |
| 版本节奏 | 每季度 patch,5.0.9 在架(2026-08) | 月度级 patch,滚动快 | 无版本号(服务持续演进) | 2.x/3.x 双线维护 |
| 兼容矩阵 | CQL Binary v5+,多语言官方驱动 | CQL 协议兼容,可复用 Cassandra 驱动 | 兼容 Cassandra CQL 3.11 客户端协议 | 原生 Java API/Thrift2/REST |
| 硬件效率特征 | JVM,单节点吞吐中等,依赖调优 | 单核性能显著更高,低尾延迟 | 免运维、按量计费 | 依赖 HDFS/ZooKeeper,重运维 |
| 典型用户场景 | 多 DC 多活、写优先负载 | 追求更高单机密度与更低延迟 | 云上免运维、弹性伸缩 | 已有 Hadoop/HDFS 生态 |
💡 选型建议:需要自建跨数据中心多活、生态与人才储备最成熟的宽列数据库,选 Cassandra;追求单机更高吞吐密度且可接受 AGPL 许可与兼容性少量偏差,选 ScyllaDB;云上免运维优先则直接用 DynamoDB(并可用 Cassandra 驱动接入);已有 HDFS 大数据平台且需与 Hadoop 生态深度整合,考虑 HBase。
八、参考链接
- 项目官网与下载:https://cassandra.apache.org/ 、https://cassandra.apache.org/_/download.html
- 官方文档(5.0):https://cassandra.apache.org/doc/5.0/
- CQL 语言参考:https://cassandra.apache.org/doc/latest/cql/
- 架构概览(官方):https://cassandra.apache.org/doc/5.0/architecture/overview.html
- 官方发行目录:https://downloads.apache.org/cassandra/
- 官方 Git 仓库:https://github.com/apache/cassandra
- Apache 项目页:https://projects.apache.org/project.html?cassandra
- 5.0 发布博客:https://cassandra.apache.org/blog/Apache-Cassandra-5.0.html