NoSQL性能測試:MongoDB VS SequoiaDB

做爲NoSQL的一個重要類型,文檔型NoSQL一般被認爲是最接近傳統關係型數據庫的NoSQL。文檔型NoSQL的核心是數據嵌套,這種設計能夠從某 種程度上大大簡化傳統數據庫複雜的關聯問題。同時因爲擺脫了關係模型裏面的強一致性限制,文檔型NoSQL還能夠作到水平擴張與高可用。相比其餘的 NoSQL類型,文檔型NoSQL的應用範圍要普遍的多。

  常見的文檔型NoSQL包括MongoDB、CouchDB等,其中MongoDB是一個高性能、開源、無模式的文檔型數據庫,它在許多場景下 可用於替代傳統的關係型數據庫或鍵/值存儲方式,MongoDB使用C++開發,提供了不少功能,如面向集合的存儲、動態查詢、完整的索引支持、查詢監 視、複製及自動故障轉移、高效的傳統存儲方式、自動分片以支持雲級別的伸縮性。 html

  SequoiaDB(巨杉數據庫)做爲文檔型NoSQL家族中的新成員,其企業級的新特性頗受關注。根據SequoiaDB官網的描述,該數據 庫在提供文檔類JSON接口的同時,可以替代HBase做爲Hadoop的存儲引擎。與MongoDB相比,其Hadoop接口較爲完善。所以,本文將 MongoDB與SequoiaDB兩款文檔型NoSQL同時進行測試,對比二者的功能和性能。 數據庫

  1、測試環境 服務器

  本次測試基於的環境是6臺刀片機,每臺的配置爲4核AMD Opteron 2378 2.4GHz,內存4GB的服務器,2x150GB Raid 0本地磁盤。操做系統使用SLES 11SP2(Kernel:3.0.13-0.27-default x86_64)。 多線程

  MongoDB部署在6臺刀片機上,每臺物理機做爲一個單節點Shard。其中兩臺物理機還部署了Config Server,另一臺物理機部署了mongos進程。 併發

  SequoiaDB部署在6臺刀片機上,每臺物理機做爲一個單節點複製組,其中兩臺物理機還部署了編目節點,另一臺物理機部署了協調節點。 異步

  MongoDB與SequoiaDB均使用「id」做爲分區鍵字段,每條記錄平均550字節,均採用手工指定分區方式分區。 分佈式

  2、主要功能對比 oop

功能 性能

MongoDB 測試

SequoiaDB

開發語言

C++

C++

類型

文檔類

文檔類

分佈式機制

Sharding

Sharding

數據格式

JSON/BSON

JSON/BSON

操做界面

Javascript

Javascript

支持多索引

支持

支持

Hadoop支持

支持內置MapReduce

支持Hadoop MapReduce查詢,可以鏈接Pig/Hive接口

支持範圍切分與散列切分

支持

支持

支持彙集操做

支持

支持

其餘功能

支持地理索引

支持跨集合跨節點事務、內置支持類SQL查詢、支持數據壓縮

主要應用場景

數據類型多變,須要動態查詢,須要多字段索引

數據類型多變,須要動態查詢,須要多字段索引,須要事務功能(提交回滾),Hadoop環境中的數據存儲

  3、命令行操做對比

  如下命令行完成建立表(集合)、插入數據、查詢數據、刪除表(集合)四種操做。

  一、MongoDB

NoSQL性能測試:MongoDB VS SequoiaDB

  二、SequoiaDB

NoSQL性能測試:MongoDB VS SequoiaDB


  4、主要性能對比

  一、單節點單線程場景

  測試環境:1臺刀片機,SequoiaDB/MongoDB爲獨立模式。

  錄入場景:使用單線程本地TCPIP鏈接,插入1億條記錄。

  查詢場景:使用單線程本地TCPIP鏈接,使用集合掃描1億條記錄,返回最後一條。

  (1)數據錄入

  X軸表明數據庫內包含的記錄總數,Y軸表明數據庫每秒插入記錄數量。

主要性能對比

  (2)數據錄入(平均)

  Y軸表明數據庫平均每秒插入記錄數量。

主要性能對比

  (3)數據查詢

  Y軸表明數據庫平均每秒掃描記錄數量。

主要性能對比

  (4)佔用空間

  Y軸表明插入1億條記錄後所佔用的存儲空間(單位MB)。

主要性能對比

  從以上測試結果能夠看出,SequoiaDB在單節點、單線程的使用場景下,插入性能優於MongoDB,在查找某一特定記錄方面 MongoDB略快於SequoiaDB,在特性方面,MongoDB的異步插入至關於批量插入,而SequoiaDB的壓縮插入在比較佔優點,性能相對 自身的批量插入提升了將近一倍,而空間節約就更加可觀了。


  二、多節點多線程環境

  測試環境:6臺HP刀片機,SequoiaDB/MongoDB爲集羣模式。

  錄入場景:每臺機器使用5線程本地TCPIP鏈接(總共30線程),總共插入1億2千萬條記錄。

  查詢場景:每臺機器使用5線程本地TCPIP鏈接(總共30線程),每線程使用集合掃描1億2千萬條記錄,返回最後一條。

  (1)數據錄入

  X軸表明每條線程插入的記錄總數,Y軸表明數據庫單條線程每秒插入記錄數量。

主要性能對比:多節點多線程環境

  (2)數據錄入(平均)

  Y軸表明數據庫單條線程平均每秒插入記錄數量。

主要性能對比:多節點多線程環境

  (3)數據查詢

  Y軸表明數據庫單條線程平均每秒掃描記錄數量。

主要性能對比:多節點多線程環境

  (4)表掃描

  X軸表明每條數據庫中存在的記錄總數,Y軸表明數據庫單條線程每秒掃描記錄數量。

主要性能對比:多節點多線程環境

  (5)佔用空間

  Y軸表明插入1億2千萬條記錄後所佔用的總的存儲空間(單位MB)。

主要性能對比:多節點多線程環境

  在同等狀況下,都採用6個分區和手動分區,MongoDB也禁用了balancer,對MongoDB和SequoiaDB共有特性進行對比測 試。從以上測試結果能夠看出,SequoiaDB的插入性能在併發狀況下也遠遠優於MongoDB,雖然MongoDB在查詢特定記錄方面仍是略勝一籌, 可是從引入全表掃描的結果來看,一旦客戶端查詢而且取回記錄集時,SequoiaDB優點突顯。

  5、總結

  MongoDB和SequoiaDB做爲文檔型NoSQL的表明,在功能和性能表現上各有千秋。經過本次測試可以看出,MongoDB和 SequoiaDB的性能都很強勁,其中SequoiaDB更是表現不俗,相信在不久的未來SequoiaDB可以獨當一面,打開企業級NoSQL市場的 局面。

相關文章
相關標籤/搜索