您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家?guī)碛嘘Pcassandra系統(tǒng)包含哪些功能,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
cassandra是由facebook開發(fā)的一套NoSQL存儲引擎,也是目前最火的NoSQL應用之一,cassandra的特性不同的人理解不一樣,歸納起來有如下幾點:
分布式,集群下容錯性高,無限水平擴展性schema的靈活控制,隨意增刪字段、支持范圍查詢。下面億速云小編來講解下cassandra系統(tǒng)包含哪些功能?
cassandra系統(tǒng)包含哪些功能
1.硬盤是新的磁帶
“內存是新的硬盤,硬盤是新的磁帶”這是Jim Gray的一句名言。我們目前對硬盤(非SSD)的利用,多是隨機讀取,這時的硬盤讀取速度是相當慢的,但是如果把硬盤當成磁帶進行順序讀取的話,速度是相當驚人的。
而cassandra的設計恰恰是沖著這一點來的,他在內在中保存一定量的數(shù)據后再統(tǒng)一寫入磁盤,這本身就是一次順序寫入,在寫入后不再進行更改,這樣在進行數(shù)據讀取時,就可以只進行一次次的順序讀取即可。大大提高了磁盤的效率。
如果cassandra不更改數(shù)據,那數(shù)據的update操作又是如何實現(xiàn)的呢,cassandra采用的是追加方式,再寫一條信息,取的時候取出對這個數(shù)據的所有操作再根據時間順序進行案件重演就可以算出最新的數(shù)據是什么了。
cassandra系統(tǒng)包含哪些功能
2.bloom-filter算法的應用
bloom-filter算法簡單來說就是判斷一個值是否存在于一個集合中的算法,用得最多的是在搜索引擎的URL抓取中,如果這個URL在一段時間抓取過的URL列表中,那就不再進行抓取。這個算法的時間和空間復雜度都很小,基本每一個數(shù)據的判斷只需要做幾次hash就可以了,但是問題是有一定的誤差,只要應用可接受這個誤差,那使用bloom-filter算法是最好的。
bloom-filter在cassandra用來判斷一個數(shù)據塊中是否有一個值的更新,上面說到,我們在讀取數(shù)據時,是將其更新記錄全部讀取再通過時間順序排序得到最新值。而cassandra每次內存存儲上限(這個可以自由設置,但為了保證效率,通常低于物理內存)到時都會將內在中的數(shù)據寫入硬盤,生成一個新的文件。于是在數(shù)據量很大時,會有很多個塊生成,我們如果所有塊都去查找是否有某一個值的更新記錄,是會浪費時間降低效率的,于是cassandra用bloom-filter算法來決定是否對這個塊進行查找,cassandra中的index.db文件就是存儲bloom-filter算法的hash表的。
我們上面也說過,bloom-filter算法會有一定誤差,但是這個誤差是可能會將不在一個集合中的值誤判為在這個集合中,而不會將在這個集合中的值誤判為不在這個集合中,有點殺三千不放一個的意思。這個誤差在這里是可以忍受的,因為我們可以多查一個不存在這個值的數(shù)據塊,但是決不會漏掉任何一個。
3.基于gossip的多點同步
gossip是一個p2p協(xié)議的實現(xiàn),他的原理是向周圍的節(jié)點傳遞信息,直到所有節(jié)點都有同樣的信息,這種傳播是病毒式的。通過這種方式,可以達到多點同步,并且可以不用關心具體節(jié)點量實現(xiàn)無限水平擴展的功能。而且多點分布式系統(tǒng)有很好的容錯機制,集群中的一臺或N臺機器出問題,不會對整體數(shù)據服務的正確性造成影響。而cassandra的錯誤偵測系統(tǒng)也能很快的發(fā)現(xiàn)壞死的結點以便及時處理。
上述就是小編為大家分享的cassandra系統(tǒng)包含哪些功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。