近日,知名獨立基准測評機構Bankmark,針對目前市面上主流的NoSQL數據庫SequoiaDB、MongoDB以及Cassandra三款NoSQL數據庫產品做了性能對比測試並發布測試報告。在所有的測試中,三款NoSQL數據庫產品的表現各有千秋,沒有那款產品能在所有測試場景中完敗對手,就整體表現而言SequoiaDB與Cassandra不相上下表現上佳,而MongoDB表現卻不理想屬於墊底的存在。
測試機構:
Bankmark是一家德國的獨立基准測評機構,業內著名的NoSQL性能測試團隊。
測試產品:
MongoDB(目前名氣最大,用的人最多的NoSQL數據庫,占據了非關系型數據庫的主流位置。)
SequoiaDB(由前IBM DB2團隊的研發人員創建,據稱在性能和功能上能夠與MongoDB做正面抗衡。)
Cassandra(是Facebook的數據庫系統的開源分支,支持者眾多,而Cassandra能一直穩壓HBase(高貴的血統,與Hadoop天然集成)長期霸占列存儲第一更是其優越性的強有力證明。)
測試環境:
Bankmark使用了 Yahoo Cloud Serving Benchmark(YCSB)測試框架作為測試工具。
所有的測試都在物理硬件上進行,沒有使用任何虛擬化的層級。
所有的數據庫測試都在一個10節點的集群上進行,其中10台服務器(Dell PowerEdge R520(5台)、Dell PowerEdge R720(5台))作為數據庫系統的主機,5台(HP ProLiant BL465c)刀片機作為YCSB客戶端。
測試結果:
從報告結果來看,沒有那款產品能在所有測試場景中全部擊敗對手,在“大部分內存環境”的設定下,SequoiaDB的性能明顯優於其他的產品,除了在Cassandra的強項“讀多寫少”。在“全內存環境”下測試結果表明,SequoiaDB擁有更快速的讀請求性能,而Cassandra在寫請求下表現要好於SequoiaDB。然而,在所有的測試案例中,MongoDB幾乎都是最慢的。更多內容請見測試報告(NoSQL Performance Test)
大部分內存環境(Mostly-in-memory):原始數據大小為總RAM大小的1/4
全內存環境(in-memory):原始數據大小為總RAM大小的1/2
測試場景1: 2億條記錄(每個節點2000萬)
在本實驗中,全內存環境下(原(始)數據大小大約占系統總內存的45%左右 )
1、單條數據導入
從上圖結果中可以看到,在全內存環境下,單條記錄載入操作,Cassandra最高,總吞吐量可達每秒近7萬,Mongodb最差。
2、批量數據導入(1000條記錄一批次)
在該測試中,數據為每批次1000條,測試結果顯示,SequoiaDB可以達到每秒鍾近6.5萬的導入速度。
3、Zipfian分布,100%讀
單純隨機查詢的測試中,SequoiaDB表現最為突出,Mongodb次之。
4、Zipfian分布,50%讀,50%更新
在查詢更新平衡測試中(50%讀,50%更新),Sequoiadb表現最佳,Mongodb表現最不理想。
5、Zipfian分布,5%讀,95%更新
在以更新為主的測試中(5%查詢,95%更新),Cassandra表現最佳。
6、Zipfian分布,95%讀,5%更新
在以查詢為主的測試中(95%查詢,5%更新),mongodb表現最優秀,Cassandra最差
7、latest分布,95%讀,5%插入
從圖中可以看出,查詢最新測試中,SequoiaDB對於剛剛寫入至內存中便讀取的場景性能最佳,Cassandra最差
測試場景2: 1億條記錄(每個節點1000萬)
在本案例/實驗中,大部分內存環境下(原(始)數據大小大約占系統總內存的22%左右)
1、單條記錄導入
從上圖結果中可以看到,在大部分內存環境下,單條記錄載入操作,Sequoiadb最佳。這與在全內存環境下結果發生了變化。
2、批量數據導入
測試結果顯示,SequoiaDB可以達到每秒鍾7萬多的導入速度。
3、Zipfian分布,100%讀
單純隨機查詢的測試中,SequoiaDB表現依然是最為突出,Cassandra次之。。
4、Zipfian分布,50%讀,50%更新
在查詢更新平衡測試中,50%讀,50%更新,Sequoiadb依然表現最佳
5、Zipfian分布,5%讀,95%更新
在以更新為主的場景測試中(5%查詢,95%更新),Cassandra秒殺對手。
6、Zipfian分布,95%讀,5%更新
在以查詢為主的場景中(95%查詢,5%更新),Cassandra表現最佳,Mongodb反而表現最差
7、 latest分布,95%讀,5%插入
從圖中可以看出,與全內存環境不同的結果,SequoiaDB依然最快,Cassandra超過Mongodb僅次於SequoiaDB。