您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Cassandra和HBase中怎樣使用的BigTable模型,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
眾所周知,BigTable是NoSQL數(shù)據(jù)庫的王者,其論文更是NoSQL理論的基石,但遺憾的是BigTable不開源,于是有了開源的BigTable版本這一說法,其中的佼佼者包括今天提到的兩位:Cassandra和HBase。下面億速云小編來講解下Cassandra和HBase中怎樣使用的BigTable模型?
Cassandra和HBase中怎樣使用的BigTable模型
1.FundamentallyDistributed(分布式存儲)
項目從最初規(guī)劃上,就是為海量數(shù)據(jù)服務(wù)的,當(dāng)然分布式存儲的思想也是扎根于其血脈中。分布式系統(tǒng)主要需要考慮兩個方面:partitioning(分區(qū)存儲,也可以理解為通常說的Sharding)、replication(數(shù)據(jù)復(fù)制,主要是將數(shù)據(jù)復(fù)制成多份以提高可用性)。
2.ColumnOriented(列式存儲)
和普通的RDBMS不一樣,普通的RDBMS通常是行式存儲的,一行數(shù)據(jù)是連續(xù)存在一段磁盤空間上的。而列式存儲是將各個列分別進(jìn)行連續(xù)的存儲。也正是因此,它對于處理字段中的NULL字段,能夠不占用過多的空間。同時能夠支持靈活松散的列定義。也就是我們通常所說的schema-less。
Cassandra和HBase中怎樣使用的BigTable模型
3.Sequentialwrite(順序?qū)懘疟P)
BigTable型系統(tǒng)的一個特點是其對寫性能進(jìn)行的優(yōu)化。它的寫都是通過先記一條操作日志,然后直接寫在內(nèi)存中的數(shù)據(jù)集合,然后其集合按條件或定時將數(shù)據(jù)flush到磁盤。這里涉及到的記操作日志或者數(shù)據(jù)flush到磁盤都會順序的磁盤操作。故而避免了磁盤隨機(jī)操作造成的無謂的磁盤尋道時間。
4.Mergedread(讀操作數(shù)據(jù)合并)
上面說到寫操作是通過定時將數(shù)據(jù)直接flush到磁盤進(jìn)行的,每次flush都會生成一個數(shù)據(jù)塊,那可能造成一個數(shù)據(jù)在多個數(shù)據(jù)塊中的情況,而在讀的時候就需要將這多個版本中的值進(jìn)行合并。其中在判斷一個數(shù)據(jù)塊是否包含指定值時使用了bloom-filter算法。
5.PeriodicDataCompaction(定期數(shù)據(jù)合并)
同樣是上面說到的,一個數(shù)據(jù)可能存在于多個數(shù)據(jù)塊,如果我們不做處理,隨著時間的推移,數(shù)據(jù)塊會越來越多。所以BigTable型系統(tǒng)會進(jìn)行定時的數(shù)據(jù)合并。在上面講到的將內(nèi)存中的數(shù)據(jù)直接flush到磁盤的過程中,flush之前進(jìn)行了一次數(shù)據(jù)的排序操作,既是說存在磁盤中的塊中的數(shù)據(jù),都是順序的,那么對一堆順序的數(shù)據(jù)進(jìn)行排重合并,其實和我們熟知的多路歸并排序很相似。故而其定時數(shù)據(jù)合并的效率也是非常高的。
關(guān)于Cassandra和HBase中怎樣使用的BigTable模型就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。