typora/daliy_note/9月归档/9.25/Cassandra.md

61 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

2024-12-11 21:48:55 -05:00
> https://wallenotes.github.io/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/Cassandra/
Apache Cassandra 是一个高可用性、高扩展性、分布式的 NoSQL 数据库管理系统。它最初由 Facebook 开发,并在 2008 年开源,后来成为 Apache 软件基金会的顶级项目。Cassandra 采用了去中心化的架构设计,能够在大规模分布式系统中实现高性能和高可用性。
### Cassandra 的主要特点
1. **去中心化架构**Cassandra 采用去中心化的对等节点架构Peer-to-Peer没有单点故障每个节点在集群中地位平等。数据自动在集群中均匀分布保证了高可用性和容错性。
2. **线性扩展性**Cassandra 能够通过增加节点来线性扩展处理能力和存储容量。无论是写操作还是读操作,性能都可以通过增加节点来提升。
3. **高可用性和容错性**数据在多个节点之间进行复制确保即使某些节点故障数据依然可用。Cassandra 支持多数据中心的部署,能够在地理上分布的多个数据中心之间进行数据复制。
4. **灵活的数据模型**Cassandra 采用了宽列存储模型Wide Column Store允许用户定义灵活的表结构。每个表可以有多个列族每个列族可以包含任意数量的列。
5. Cassandra 提供了强一致性和最终一致性之间的灵活选择。用户可以根据需求调整读写操作的一致性级别(例如 `ONE`、`QUORUM`、`ALL`),以在性能和数据一致性之间进行权衡。
6. **高吞吐量和低延迟**Cassandra 设计用于处理大规模的写入和读取操作,能够在高并发环境下保持低延迟和高吞吐量。
7. **支持 CQLCassandra Query Language**CQL 类似于 SQL但专为 Cassandra 的数据模型设计,提供了简单易用的查询接口。
### Cassandra 的核心组件
1. **节点Node**Cassandra 集群中的基本单位,每个节点存储部分数据。所有节点地位平等,可以独立处理读写请求。
2. **数据中心Data Center**多个节点可以组成一个数据中心Cassandra 支持跨数据中心的部署和数据复制,以提高容灾能力和数据可用性。
3. **键空间Keyspace**:键空间是一个逻辑容器,用于组织表,类似于关系数据库中的数据库。它定义了数据复制策略等元数据信息。
4. **表Table**:表是数据存储的基本单位,由行和列组成。每行有一个唯一的主键,通过主键进行数据分区和分布。
5. **列族Column Family**:列族是表的一个逻辑分组,用于组织列。每个列族可以包含任意数量的列。
### Cassandra 的常见使用场景
1. **实时大数据分析**由于其高吞吐量和低延迟Cassandra 适合用于实时大数据分析和处理。例如,日志记录、监控系统、点击流分析等。
2. **社交网络**Cassandra 能够高效处理社交网络中的大量用户数据和交互数据支持高并发的读写操作。例如Facebook 在其收件箱搜索系统中使用了 Cassandra。
3. **物联网IoT**Cassandra 适合处理物联网设备产生的大量数据,能够在分布式环境中实现数据收集和处理。
4. **电子商务**Cassandra 能够高效处理电子商务平台中的商品目录、用户数据、订单记录等,支持高并发的交易处理。
5. **金融服务**:金融机构可以利用 Cassandra 存储和分析金融交易数据、用户行为数据等,支持实时风控和欺诈检测。
### Cassandra 的优缺点
#### 优点
1. **高可用性和无单点故障**:去中心化的架构设计确保了高可用性和无单点故障。
2. **线性扩展性**:能够通过增加节点来线性提升性能和存储容量。
3. **灵活的数据模型**:宽列存储模型允许用户定义灵活的数据结构。
4. **高吞吐量和低延迟**:设计用于处理大规模的写入和读取操作,性能表现优异。
#### 缺点
1. **学习曲线**Cassandra 的数据模型和查询语言与传统关系数据库不同,可能需要一定的学习成本。
2. **事务支持有限**Cassandra 主要提供最终一致性,事务支持不如传统关系数据库强大。
3. **复杂的运维管理**:大规模的分布式系统需要专业的运维管理和监控,运维成本较高。
### 总结
Apache Cassandra 是一个强大的分布式 NoSQL 数据库,适用于需要高可用性、高扩展性和高性能的应用场景。尽管它的学习和运维成本较高,但其在处理大规模数据和高并发操作中的优势,使其成为诸多企业和应用的首选。