背景
谷歌在2006年的一份研究报告中首次对Bigtable进行了阐述,如果你熟悉Bigtable这个名词,那么:行先是以一种非常独特的方式被索引,随后Bigtable利用行键对数据进行分割,将它们分布到集群中。这句话你应该不陌生。
Cassandra和HBase都在很大程度上借鉴了早期Bigtable的定义。Cassandra起源于Bigtable和亚马逊的Dynamo技术,HBase将自身定位为"开源Bigtable工具"。这两个项目有许多相同的特点,同时又有许多重大区别。
Canssadra简介
ApsaraDB for Cassandra是基于开源Apache Cassandra,融合阿里云数据库DBaaS能力的分布式NoSQL数据库。Cassandra已有10年 的沉淀,基于Amazon DynamoDB的分布式设计和 Google Bigtable 的数据模型。具备诸多优异特性:采用分布式架构、无中心、支持多活、弹性可扩展、高可用、容错、一致性可调、提供类SQL查询语言CQL等。Cassandra为互联网业务而生,已在全球广大互联网公司有成熟应用,是目前最流行的宽表数据库。 https://www.aliyun.com/product/cds
我们先看看阿里云官网怎么说:
上面的字太多了,总结一下:
- 分布式NoSQL数据库,基于Amazon DynamoDB的分布式设计和 Google Bigtable 的数据模型
- 极致在线、高并发、高存储、可调的一致性、灵活
- 类SQL(CQL)的查询语法
- Cassandra Spark无缝衔接
Cassandra基础架构
基本架构:
- Cassandra实例由1到3个DC组成,每个DC由1到500个节点组成。每个节点部署一个cassandra进程。
- Cassandra没有Master节点或Proxy节点,所有节点物理是对等的(逻辑上系统会选择每DC有2个节点作为seed节点,对系统压力不大,无需单独部署进程)。
- 客户端与服务端每个节点连接,保障高性能。
- 不同的数据中心可以设定不同的复本数,既可以作为同城跨区或者异地跨区多活多可用,也可以作备份容灾或离线分析使用。
其中,存储空间:一个节点为80GB~16TB,500个节点,也就是8000TB,大约8PB左右。
Cassandra和Hbase异同
- Cassandra会在集群中选取几个种子节点,负责集群通信,达到高可用目的;Hbase则是利用主备节点选举HMaster,如果主节点故障,则启用备份节点。
- Cassandra利用Gossip协议进行节点通信,Hbase使用Zookeeper进行进行协调。
- Cassandra允许用户创建二级索引,Hbase缺乏二级索引支持,但是有开源解决方案。
- Hbase有"协处理器"(coprocessors)这一概念,允许在HBase进程中执行用户自定义代码。Cassandra目前还没有支持。
- Cassandra集群配置更简单
使用场景
Hbase和Cassandra各种自己的特点,并没有所谓的谁更强。
如果你的场景是:
- 消息、feed流、订单查询等
- 写密集、统计和分析型场景
- 会频繁增加集群数据节点
那么不妨考虑一下Cassandra。