现在的位置: 首页 > 数据库 > 正文

Cassandra 和 HBase 中怎样使用的 BigTable 模型

2020年07月01日 数据库 ⁄ 共 1158字 ⁄ 字号 评论关闭

众所周知,BigTable是NoSQL数据库的王者,其论文更是NoSQL理论的基石,但遗憾的是BigTable不开源,于是有了开源的BigTable版本这一说法,其中的佼佼者包括今天提到的两位:Cassandra和HBase。下面学步园小编来讲解下Cassandra和HBase中怎样使用的BigTable模型?

Cassandra和HBase中怎样使用的BigTable模型

1.FundamentallyDistributed(分布式存储)

项目从最初规划上,就是为海量数据服务的,当然分布式存储的思想也是扎根于其血脉中。分布式系统主要需要考虑两个方面:partitioning(分区存储,也可以理解为通常说的Sharding)、replication(数据复制,主要是将数据复制成多份以提高可用性)。

2.ColumnOriented(列式存储)

和普通的RDBMS不一样,普通的RDBMS通常是行式存储的,一行数据是连续存在一段磁盘空间上的。而列式存储是将各个列分别进行连续的存储。也正是因此,它对于处理字段中的NULL字段,能够不占用过多的空间。同时能够支持灵活松散的列定义。也就是我们通常所说的schema-less。

Cassandra和HBase中怎样使用的BigTable模型

3.Sequentialwrite(顺序写磁盘)

BigTable型系统的一个特点是其对写性能进行的优化。它的写都是通过先记一条操作日志,然后直接写在内存中的数据集合,然后其集合按条件或定时将数据flush到磁盘。这里涉及到的记操作日志或者数据flush到磁盘都会顺序的磁盘操作。故而避免了磁盘随机操作造成的无谓的磁盘寻道时间。

4.Mergedread(读操作数据合并)

上面说到写操作是通过定时将数据直接flush到磁盘进行的,每次flush都会生成一个数据块,那可能造成一个数据在多个数据块中的情况,而在读的时候就需要将这多个版本中的值进行合并。其中在判断一个数据块是否包含指定值时使用了bloom-filter算法

5.PeriodicDataCompaction(定期数据合并)

同样是上面说到的,一个数据可能存在于多个数据块,如果我们不做处理,随着时间的推移,数据块会越来越多。所以BigTable型系统会进行定时的数据合并。在上面讲到的将内存中的数据直接flush到磁盘的过程中,flush之前进行了一次数据的排序操作,既是说存在磁盘中的块中的数据,都是顺序的,那么对一堆顺序的数据进行排重合并,其实和我们熟知的多路归并排序很相似。故而其定时数据合并的效率也是非常高的。

以上就是关于“Cassandra和HBase中怎样使用的BigTable模型”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.