Cassandra數(shù)據(jù)存儲(chǔ)簡(jiǎn)介
1、數(shù)據(jù)存儲(chǔ)方式
Cassandra 的數(shù)據(jù)模型是基于列族(Column Family)的四維或五維模型。在 Cassandra 寫(xiě)入數(shù)據(jù)之前,需要先記錄日志 ( Commitlog),然后數(shù)據(jù)開(kāi)始寫(xiě)入到 Column Family 對(duì)應(yīng)的 Memtable 中,Memtable 是一種按照 key 排序的內(nèi)存結(jié)構(gòu),記錄在緩存中,在滿(mǎn)足一定條件(容量、條數(shù)、時(shí)間間隔超過(guò)閾值)時(shí),再把 Memtable 的數(shù)據(jù)批量的刷新到磁盤(pán)上,存儲(chǔ)為 SSTable 。
使用Memtable的優(yōu)勢(shì)就是把隨機(jī)的IO變成了順序IO,降低大量寫(xiě)操作對(duì)存儲(chǔ)系統(tǒng)的壓力。
2、Cassandra 的數(shù)據(jù)模型及基本概念
Cluster:Cassandra 的節(jié)點(diǎn)實(shí)例,它可以包含多個(gè)Keyspace。
Keyspace::用于存放 ColumnFamily 的容器,相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的 Schema 或 database。
ColumnFamily::用于存放 Column 的容器,類(lèi)似關(guān)系數(shù)據(jù)庫(kù)中的 table 的概念 。
SuperColumn::它是一個(gè)特列殊的 Column, 它的 Value 值可以包函多個(gè)Column。
Column::Cassandra 的最基本單位。由name , value , timestamp組成。
數(shù)據(jù)模型圖如下:
圖1 Cassandra數(shù)據(jù)模型圖
3、Cassandra中數(shù)據(jù)存放規(guī)則
data:存儲(chǔ)真正的數(shù)據(jù)文件,既后面的SStable文件,可以指定多個(gè)目錄。
commitlog:存儲(chǔ)未寫(xiě)入SSTable中的數(shù)據(jù)(在每次寫(xiě)入之前先放入日志文件)。
cache:存儲(chǔ)系統(tǒng)中的緩存數(shù)據(jù)(在服務(wù)重啟的時(shí)候從這個(gè)目錄中加載緩存數(shù)據(jù))。
Commitlog中包括兩部分:Commitlog-xxxx.log和Commitlog-xxxx.log.header。Commitlog-xxxx.log保存上次更新操作的值,Commitlog-xxxx.log.header記錄哪些數(shù)據(jù)已經(jīng)從Memtable中寫(xiě)入到了SSTable。Commitlog-xxxx.log.header也可能不存在。
SSTable中數(shù)據(jù)分為四種類(lèi)型:xxxx-Data.db、xxxx-Filter.db、xxxxx-Index.db、xxxx-Statistics.db。Data文件存儲(chǔ)數(shù)據(jù)與Key對(duì)應(yīng)的一些Column的索引信息(利用索引快速的找到要找的值)。Filter文件的作用是快速定位某一個(gè)Key是否在該SSTable文件中(用布爾過(guò)濾器來(lái)做判斷)。Index文件用于索引文件,保存Key和在Data文件中對(duì)應(yīng)的位置,在內(nèi)存中查找時(shí)先哈希再二分法。Statistics文件用來(lái)存儲(chǔ)SSTable中所包含的Column的個(gè)數(shù)和Row的個(gè)數(shù)。
在Cassandra中除了用戶(hù)自己定義的Keyspace之外,還有一個(gè)特殊的Keyspace:system。其作用有二:管理Cassandra的系統(tǒng)元數(shù)據(jù)信息;緩存HINT數(shù)據(jù)。
數(shù)據(jù)庫(kù) NoSQL數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。