您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關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系統包含哪些功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。