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