Cassandra和HBase中怎样使用的BigTable模型
这篇文章将为大家详细讲解有关Cassandra和HBase中怎样使用的BigTable模型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
成都网站制作、网站设计服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
众所周知,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模型就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文名称:Cassandra和HBase中怎样使用的BigTable模型
网页地址:http://azwzsj.com/article/igsghi.html