一、為什么Cassandra的寫速度比MySQL快
Cassandra 的寫速度比 MySQL 快的兩大根本原因。1、cassandra沒(méi)有sql解析層,這是個(gè)大塊。2、cassandra采用memstable+sstable的模型,最大化的提高數(shù)據(jù)的寫入性能,磁盤操作只有順序?qū)?。nosql產(chǎn)品的數(shù)據(jù)寫入buffer非常大, nosql用數(shù)據(jù)安全換取高性能, 其實(shí)沒(méi)有絕對(duì)的優(yōu)勢(shì)。
Cassandra特點(diǎn)
(1) 列表數(shù)據(jù)結(jié)構(gòu)
在混合模式可以將超級(jí)列添加到5維的分布式Key-Value存儲(chǔ)系統(tǒng)。
(2) 模式靈活
使用Cassandra,不必提前解決記錄中的字段。你可以在系統(tǒng)運(yùn)行時(shí)隨意的添加或移除字段。
(3) 真正的可擴(kuò)展性
Cassandra是純粹意義上的水平擴(kuò)展。為給集群添加更多容量,可以增加動(dòng)態(tài)添加節(jié)點(diǎn)即可。不必重啟任何進(jìn)程,改變應(yīng)用查詢,或手動(dòng)遷移任何數(shù)據(jù)。
(4) 多數(shù)據(jù)中心識(shí)別
可以調(diào)整節(jié)點(diǎn)布局來(lái)避免某一個(gè)數(shù)據(jù)中心起火,一個(gè)備用的數(shù)據(jù)中心將至少有每條記錄的完全復(fù)制。
(5) 范圍查詢
如果不喜歡全部的鍵值查詢,則可以設(shè)置鍵的范圍來(lái)查詢。
(6) 分布式寫操作
可以在任何地方任何時(shí)間集中讀或?qū)懭魏螖?shù)據(jù)。并且不會(huì)有任何單點(diǎn)失敗。
Cassandra寫數(shù)據(jù)時(shí),首先會(huì)將請(qǐng)求寫入Commit Log以確保數(shù)據(jù)不會(huì)丟失,然后再寫入內(nèi)存中的Memtable,超過(guò)內(nèi)存容量后再將內(nèi)存中的數(shù)據(jù)刷到磁盤的SSTable,并定期異步對(duì)SSTable做數(shù)據(jù)合并(Compaction)以減少數(shù)據(jù)讀取時(shí)的查詢時(shí)間。因?yàn)閷懭氩僮髦簧婕暗巾樞驅(qū)懭牒蛢?nèi)存操作,因此有非常高的寫入性能。而進(jìn)行讀操作時(shí),Cassandra支持像LevelDB一樣的實(shí)現(xiàn)機(jī)制,數(shù)據(jù)分層存儲(chǔ),將熱點(diǎn)數(shù)據(jù)放在Memtable和相對(duì)小的SSTable中,所以能實(shí)現(xiàn)較高的讀性能。
延伸閱讀:
二、MongoDB是什么
非關(guān)系型數(shù)據(jù)庫(kù)(nosql ),屬于文檔型數(shù)據(jù)庫(kù)。MongoDB采用類JSON的documents來(lái)存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。
MongoDB采用動(dòng)態(tài)數(shù)據(jù)模型schema,這意味著不需要預(yù)先定義表的數(shù)據(jù)類型和字段名。當(dāng)MongoDB需要更新文檔documents的時(shí)候,可以輕松增加新的字段名或者刪除舊的字段。MongoDB讓數(shù)據(jù)結(jié)構(gòu)更加層級(jí)化,因而存儲(chǔ)數(shù)組等復(fù)雜數(shù)據(jù)結(jié)構(gòu)。 在同一個(gè)集合collection中,文檔document對(duì)字段也沒(méi)有強(qiáng)約束,因此更容易設(shè)計(jì)差異化的數(shù)據(jù)結(jié)構(gòu)。