您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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模型就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。