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