这期内容当中小编将会给大家带来有关cassandra系统包含哪些功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
cassandra是由facebook开发的一套NoSQL存储引擎,也是目前最火的NoSQL应用之一,cassandra的特性不同的人理解不一样,归纳起来有如下几点:
分布式,集群下容错性高,无限水平扩展性schema的灵活控制,随意增删字段、支持范围查询。下面亿速云小编来讲解下cassandra系统包含哪些功能?
cassandra系统包含哪些功能
1.硬盘是新的磁带
“内存是新的硬盘,硬盘是新的磁带”这是Jim Gray的一句名言。我们目前对硬盘(非SSD)的利用,多是随机读取,这时的硬盘读取速度是相当慢的,但是如果把硬盘当成磁带进行顺序读取的话,速度是相当惊人的。
而cassandra的设计恰恰是冲着这一点来的,他在内在中保存一定量的数据后再统一写入磁盘,这本身就是一次顺序写入,在写入后不再进行更改,这样在进行数据读取时,就可以只进行一次次的顺序读取即可。大大提高了磁盘的效率。
如果cassandra不更改数据,那数据的update操作又是如何实现的呢,cassandra采用的是追加方式,再写一条信息,取的时候取出对这个数据的所有操作再根据时间顺序进行案件重演就可以算出最新的数据是什么了。
cassandra系统包含哪些功能
2.bloom-filter算法的应用
bloom-filter算法简单来说就是判断一个值是否存在于一个集合中的算法,用得最多的是在搜索引擎的URL抓取中,如果这个URL在一段时间抓取过的URL列表中,那就不再进行抓取。这个算法的时间和空间复杂度都很小,基本每一个数据的判断只需要做几次hash就可以了,但是问题是有一定的误差,只要应用可接受这个误差,那使用bloom-filter算法是最好的。
bloom-filter在cassandra用来判断一个数据块中是否有一个值的更新,上面说到,我们在读取数据时,是将其更新记录全部读取再通过时间顺序排序得到最新值。而cassandra每次内存存储上限(这个可以自由设置,但为了保证效率,通常低于物理内存)到时都会将内在中的数据写入硬盘,生成一个新的文件。于是在数据量很大时,会有很多个块生成,我们如果所有块都去查找是否有某一个值的更新记录,是会浪费时间降低效率的,于是cassandra用bloom-filter算法来决定是否对这个块进行查找,cassandra中的index.db文件就是存储bloom-filter算法的hash表的。
我们上面也说过,bloom-filter算法会有一定误差,但是这个误差是可能会将不在一个集合中的值误判为在这个集合中,而不会将在这个集合中的值误判为不在这个集合中,有点杀三千不放一个的意思。这个误差在这里是可以忍受的,因为我们可以多查一个不存在这个值的数据块,但是决不会漏掉任何一个。
3.基于gossip的多点同步
gossip是一个p2p协议的实现,他的原理是向周围的节点传递信息,直到所有节点都有同样的信息,这种传播是病毒式的。通过这种方式,可以达到多点同步,并且可以不用关心具体节点量实现无限水平扩展的功能。而且多点分布式系统有很好的容错机制,集群中的一台或N台机器出问题,不会对整体数据服务的正确性造成影响。而cassandra的错误侦测系统也能很快的发现坏死的结点以便及时处理。
上述就是小编为大家分享的cassandra系统包含哪些功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。