文章目录
Cassandra
高可用性和可扩展的分布式数据库, 它提供了跨云服务提供商、数据中心和地理位置的操作简便性和轻松的复制,并且可以在混合云环境中每秒处理PB级信息和数千个并发操作。
高可用性和高可伸缩性是Cassandra最闪亮的特点。没有单点故障
(2)数据模型
Key Space(对应 SQL 数据库中的 database)
一个Key Space中可包含若干个CF,如同SQL数据库中一个database可包含多个table。
Key(对应 SQL 数据库中的主键)
在Cassandra中,每一行数据记录是以key/value的形式存储的,其中key是唯一标识。
column(对应 SQL 数据库中的列)
Cassandra中每个key/value对中的value又称为column,它是一个三元组,即:name, value和timestamp,其中 name需要是唯一的。
super column(SQL 数据库不支持)
cassandra允许key/value中的value是一个map(key/value_list),即某个column有多个子列。
Standard Column Family(相对应 SQL 数据库中的 table)
每个CF由一系列row组成,每个row包含一个key以及其对应的若干column。
Super Column Family(SQL 数据库不支持)
每个SCF由一系列row组成,每个row包含一个key以及其对应的若干super column。
hbase
HBase 简介
HBase(Hadoop database)是一个分布式、可扩展、面向列的 NoSQL 数据库,本质上是一个 Key-Value 系统,底层存储基于 HDFS,原生支持 MapReduce 计算框架,具有高吞吐、低延时的读写特点。
什么时候使用 HBase
HBase作为一款NoSQL数据库,并不能解决所有问题。关于我们在实际生产过程中满足哪些条件的时候可以选择HBase作为底层存储,这里给出几点建议:
1、数据量规模非常庞大
一般而言,单表数据量如果只有百万级或者更少,不是非常建议使用HBase而应该考虑关系型数据库是否能够满足需求;单表数据量超过千万或者十亿百亿的时候,并且伴有较高并发,可以考虑使用HBase。这主要是充分利用分布式存储系统的优势,如果数据量比较小,单个节点就能有效存储的话则其他节点的资源就会存在浪费。
2、要求是实时的点查询
HBase是一个Key-Value数据库,默认对Rowkey即行键做了索引优化,所以即使数据量非常庞大,根据行键的查询效率依然会很高,这使得HBase非常适合根据行键做单条记录的查询。值得说明的是,允许根据行键的一部分做范围查询,这里涉及到Rowkey的设计问题,不再赘言。
3、能够容忍NoSQL短板
前面提及了NoSQL并不能解决所有问题,HBase也是一样,如果业务场景是需要事务支持、复杂的关联查询等,不建议使用HBase。HBase有它适合的业务场景,我们不能苛求它能够帮我们解决所有问题。
4、数据分析需求并不多
虽然说HBase是一个面向列的数据库,但它有别于真正的列式存储系统比如Parquet、Kudu等,再加上自身存储架构的设计,使得HBase并不擅长做数据分析,或者说数据分析是HBase的弱项,所以如果主要的业务需求就是为了做数据分析,比如做报表,那么不建议直接使用HBase。