如何根據性能選擇內存NoSQL數據庫?
2016-01-19 21:57:37 來源: mengyidan1988 評論:0 點擊:
導讀:NoSQL數據庫系統發展迅速,常見的有Redis,Tarantool ,CouchBase等等。那么對于用戶來說,該如何選擇呢?接下來我們將會結合性能測試工具Yahoo! Cloud Serving Benchmark(
導讀:NoSQL數據庫系統發展迅速,常見的有Redis,Tarantool ,CouchBase等等。那么對于用戶來說,該如何選擇呢?接下來我們將會結合性能測試工具Yahoo! Cloud Serving Benchmark(YCSB)來對幾款常用內存NoSQL進行性能對比,以找出最優方案。
本文主要內容是測試了不同NoSQL數據庫在測試工具YCSB中的表現。我們選取了3款流行的內存(in-memory)數據庫管理系統:Redis,Tarantool 以及 CouchBase,還有緩存系統Memchached。Memchached雖然不屬于數據庫管理系統但常作為快速存儲系統使用。
測試環境由4臺在Microsoft Azure Cloud中的虛擬機組成的計算機組組成。這些虛擬機同屬于一個數據中心。nosql-1和nosql-2用作測試Tarantool和CouchBase,nosql-3和nosql-4用作測試Redis,Azure Redis Cache 以及 Memcached。這些機器都安裝和配置了相應數據庫和測試項目。虛擬機的配置為4核A3 CPU,7GB RAM,120GB硬盤。
數據庫及設置
內存數據庫管理系統會存儲所有在主內存中的數據并在磁碟上進行持續更新操作;透過日志記錄每個數據的修改以確保連貫性。由于是以append-only方式進行日志寫入,因此它很少遇到瓶頸問題;讀取/寫入都不會造成頻繁的磁碟頭移動。

Redis在2009推出,目前的最新版本是3.0.5。我們這里使用的版本是3.0.4,以append-only(只附加)方式進行數據管理,與其配合使用的是Microsoft Azure Redis Cache工具。

Tarantool是一款開源NoSQL數據庫管理系統。我們使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先寫)模式。Memcached是一款分布式內存緩存系統,這里使用是Memcached 1.4.14-0ubuntu9。

Couchbase Server是開源分布式NoSQL面向文檔數據庫,這里使用的版本是Couchbase 4.0.0-4047-1。
YCSB測試工具
Yahoo! Cloud Serving Benchmark(YCSB)是功能強大的NoSQL數據庫性能測試工具,它提供了6種主要的負載工作類型,以字母A到F來區分。
負載A負責更新操作,極值是50/50的讀寫操作,如用于進行新近操作記錄。負載B負責讀取操作,極值是95/5的讀寫操作,如用于進行圖片標簽管理,多進行標簽讀取操作。負載C負載100%的讀取操作,如用于進行用戶屬性獲取。負載D以先進先出方式進行插入操作,如用戶進行最新數據讀取。負載E負責小范圍記錄讀取而不是單個記錄讀取,如線程會話。負載F負責記錄的讀取,修改和寫入,如用戶信息管理。
我們對配置文件作了兩處參數修改:數據條目recordcount設為200000,操作條目operationcount設為5000000。YCSB是多線程工具,我們將以8, 16, 32, 64, 128 及256 線程來進行測試。詳細的測試腳本請點擊這里進行下載。
下列測試結果圖以顏色進行測試對象區分,





更多圖片請點擊[這里]查看。
結論
Tarantool在所有負載類型測試中皆取得了最優成績。它創建了一個無鎖內存引擎,以協同多任務方式進行操作而不是互斥或并行處理方式。根據以下性能圖表現,我們的結論是Tarantool的高吞吐量處理是其最大優勢之一。因此在多數場合下,Tarantool是用戶的最佳選擇。
原文:highscalability
譯者/伍昆,現就職于必維集團IT信息部,擔任IT運營主管一職。熱衷于計算機編程和數據庫技術。
本文主要內容是測試了不同NoSQL數據庫在測試工具YCSB中的表現。我們選取了3款流行的內存(in-memory)數據庫管理系統:Redis,Tarantool 以及 CouchBase,還有緩存系統Memchached。Memchached雖然不屬于數據庫管理系統但常作為快速存儲系統使用。
測試環境由4臺在Microsoft Azure Cloud中的虛擬機組成的計算機組組成。這些虛擬機同屬于一個數據中心。nosql-1和nosql-2用作測試Tarantool和CouchBase,nosql-3和nosql-4用作測試Redis,Azure Redis Cache 以及 Memcached。這些機器都安裝和配置了相應數據庫和測試項目。虛擬機的配置為4核A3 CPU,7GB RAM,120GB硬盤。
數據庫及設置
內存數據庫管理系統會存儲所有在主內存中的數據并在磁碟上進行持續更新操作;透過日志記錄每個數據的修改以確保連貫性。由于是以append-only方式進行日志寫入,因此它很少遇到瓶頸問題;讀取/寫入都不會造成頻繁的磁碟頭移動。

Redis在2009推出,目前的最新版本是3.0.5。我們這里使用的版本是3.0.4,以append-only(只附加)方式進行數據管理,與其配合使用的是Microsoft Azure Redis Cache工具。

Tarantool是一款開源NoSQL數據庫管理系統。我們使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先寫)模式。Memcached是一款分布式內存緩存系統,這里使用是Memcached 1.4.14-0ubuntu9。

Couchbase Server是開源分布式NoSQL面向文檔數據庫,這里使用的版本是Couchbase 4.0.0-4047-1。
YCSB測試工具
Yahoo! Cloud Serving Benchmark(YCSB)是功能強大的NoSQL數據庫性能測試工具,它提供了6種主要的負載工作類型,以字母A到F來區分。
負載A負責更新操作,極值是50/50的讀寫操作,如用于進行新近操作記錄。負載B負責讀取操作,極值是95/5的讀寫操作,如用于進行圖片標簽管理,多進行標簽讀取操作。負載C負載100%的讀取操作,如用于進行用戶屬性獲取。負載D以先進先出方式進行插入操作,如用戶進行最新數據讀取。負載E負責小范圍記錄讀取而不是單個記錄讀取,如線程會話。負載F負責記錄的讀取,修改和寫入,如用戶信息管理。
我們對配置文件作了兩處參數修改:數據條目recordcount設為200000,操作條目operationcount設為5000000。YCSB是多線程工具,我們將以8, 16, 32, 64, 128 及256 線程來進行測試。詳細的測試腳本請點擊這里進行下載。
下列測試結果圖以顏色進行測試對象區分,
- Tarantool (HASH) (藍)
- Tarantool (TREE)(淺藍)
- Redis (紅)
- Azure Redis Cache (橙)
- Memcached (綠)
- CouchBase(黑)





更多圖片請點擊[這里]查看。
結論
Tarantool在所有負載類型測試中皆取得了最優成績。它創建了一個無鎖內存引擎,以協同多任務方式進行操作而不是互斥或并行處理方式。根據以下性能圖表現,我們的結論是Tarantool的高吞吐量處理是其最大優勢之一。因此在多數場合下,Tarantool是用戶的最佳選擇。
原文:highscalability
譯者/伍昆,現就職于必維集團IT信息部,擔任IT運營主管一職。熱衷于計算機編程和數據庫技術。
相關熱詞搜索:nosql redis 數據庫 database 數據庫
上一篇:容器技術將在2016年全面崛起的六大征兆
下一篇: 2015數據庫年度盤點
分享到:
收藏
