Cassandra的特点总结

关于Cassandra的特点

一般认为的是… 但是,可能会涉及到个人观点或者表达方式。

表演

・关于写入操作,具有非常高的吞吐量。
・特别是在写入(追加写入)方面,吞吐量非常高。
・在数据更新和删除方面,通过避免实际替换磁盘上的数据来避免开销。
・关于读取操作,有相当的吞吐量。
・由于基于哈希的数据检索,键等值检索的性能很高。
・它不适用于顺序访问式的读取操作。

※Cassandra的I/O是LSM-tree的一种变体,因此其性能受到其优缺点的影响。

弹性 ( Elasticity )

・通过无主架构,提供水平方向上的线性可扩展性。
・不存在特定角色的节点作为瓶颈(不是主/从架构)。
・将节点数量增加一倍可以使吞吐量增加一倍(前提是数据被适当分散,即适当建模)。
・扩展工作容易进行。
・所有节点几乎具有相同的设置。
・需要改变设置文件的IP地址等,但其余设置基本相同。
・能够扩展而无需停机或中断进行中的操作。

这不是与云服务的比较,而是与本地运营的比较。

高度可用性

・避免SPOF(Single Point of Failure,單一故障點)
・自動將數據複製到多個節點的架構
・在故障時無需進行故障切換(降低系統複雜度)
・支持多數據中心的複製

在业务无中断(滚动维护)的情况下,可以进行补丁应用和版本升级,这是一个重要的优点。

低成本

可以使用相对较低成本的服务器进行配置,与需要坚固且昂贵硬件的关系型数据库不同。

※建议使用SSD磁盘
※与提升每台节点的规格相比,增加节点更为推荐。但对于商业支持的发行版来说,增加节点会导致许可费用增加。

数据压缩

・达到80%的数据压缩率
・减少硬盘数据量
・若通过数据压缩带来的I/O时间优化效果更大于数据压缩的CPU负荷,那么读取和写入的吞吐量将会提升

数据操作

・提供了Cassandra查询语言(CQL)
・与SQL相似,因此易于上手。
・无法执行关系型(RDB)的操作。(本质上是一种键值存储)
・无法进行表的连接(JOIN),没有引用一致性的概念(需要根据查询来设计表)
・不支持子查询(副查询)
・次要索引可以使用,但有很多限制,并且效率低下。
・支持JSON。

由于NoSQL系统没有像关系型数据库(RDB)那样的统一标准(SQL),因此提供CQL是一个重大优点。

一致性、事务

・基本上结果一致性(因此不适用于需要严格事务的业务)
・Cassandra与DynamoDB一样,以结果一致性为基础
・需要定期手动维护(修复),在修复之前无法保证一致性。
・可调整的一致性(Tunable consistency)
・可以在读取或写入操作的级别上调整一致性
・不支持事务。
・不提供回滚机制。
・不提供锁机制。
・支持以下功能,但有各种限制。
・原子批处理(将多个处理作为一个单元处理)
・支持乐观锁的CAS(轻量级事务)

bannerAds