Cassandra深度解析:分布式NoSQL数据库的关键特性

需积分: 0 0 下载量 183 浏览量 更新于2024-07-17 收藏 1.86MB PDF 举报
"Cassandra学习总结" Cassandra是一个由Facebook开发并开源的分布式NoSQL数据库系统,设计灵感来源于Google的BigTable,并且与Amazon的Dynamo有着相似的理念。它旨在提供高度可扩展性和最终一致性,而非强一致性。Cassandra的数据模型是基于列族(ColumnFamily)的,这使得它在处理大量非结构化数据时具有优势。 Cassandra在多个大型公司中得到了广泛应用,例如Facebook使用它来支持其inbox search系统,处理8亿用户和200TB的数据。eBay拥有超过400M的写操作和100M的读操作每天。Netflix运行着大规模的Cassandra集群,每秒执行110万次写操作,并通过AWS EC2在美国东部的三个区域进行副本复制,总写操作达到330万次/秒。Apple拥有超过75000个节点,存储了数十PB的数据,而360则有超过1500个节点。 在Cassandra的数据模型中,有几个关键概念: 1. **Cluster**:由多个Cassandra节点实例组成的集群,它们共同协作存储和处理数据。 2. **Keyspace**:这是存放ColumnFamily的容器,类似于传统关系数据库中的Schema或database,可以设定不同的复制策略和一致性级别。 3. **ColumnFamily**:等同于表,用于存放Column,是数据存储的基本单元。 4. **SuperColumn**:在早期版本中存在,是一个特殊的Column,它的Value可以包含多个Column,没有timestamp,结构为Map<RowKey, SortedMap<SuperColumnKey, SortedMap<ColumnKey, ColumnValue>>>。SuperColumn在较新的Cassandra版本中已被弃用,取而代之的是Composite Columns。 5. **Column**:构成数据的最小单位,由name、value和timestamp组成。 Cassandra采用宽列存储模型(WideColumn Stores),每行数据由rowkey唯一标识,可以有高达20亿个列,每个列由columnkey标识。这种模型可以理解为一个二维的key-value存储,即SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>,允许灵活的结构和高效的数据检索。 在实际应用中,Cassandra通常用于需要高并发写入、分布式存储和大数据量的场景,如日志分析、实时监控、用户行为追踪等。由于其分布式特性,Cassandra支持数据的自动分区和复制,可以在多台服务器之间进行负载均衡,确保系统的可用性和容错性。同时,Cassandra的最终一致性模型允许容忍节点故障而不影响整体服务,非常适合大规模、高可用性的互联网应用。