華文網

記憶體中資料庫大PK,Redis VS Tarantool誰是性能最強者?

對於記憶體中資料庫,在Memcached基礎上,Redis改進了持久緩存資料、使用字串以外資料類型以及對資料執行複雜操作等功能。

而Tarantool進一步作出改進,它將可在資料集執行的操作提升到新的水準,並在持久性和索引方面超越Redis,更不用說速度和支援。事實上,基於Tarantool高品質持久性流程,及其用於傳輸和大型資料集的設施,它可有效用於應用程式的唯一資料庫,這是Redis無法完成的功能。

Redis的主要限制是,它無法處理大於其伺服器RAM的資料集。Tarantool提供多種存儲引擎選擇:Memtx,

其功能類似于傳統記憶體中資料庫,還有Vinyl/Disk,允許磁片存儲與RAM結合使用。Vinyl可支援處理RAM大小10到100倍的資料集,它能處理這些大資料集是因為它被優化用於快速隨機寫入,這是該配置出現的主要瓶頸。

從技術上來講,Vinyl採用的是被稱為日誌結構合併樹(LSM)的磁片訪問演算法,而不是更常見的B-tree。

Redis和Tarantool都可使用Lua的變體進行腳本化,從而允許在資料集執行複雜的功能。同時,

除了這個自訂Lua腳本外,Redis和Tarantool都可使用LuaRocks生態系統中某些套裝軟體進行擴充。然而,Tarantool使用更快的LuaJIT,而Redis採用vanilla Lua。不僅如此,Tarantool運行完整的非阻止的Lua應用伺服器,可訪問網路和外部服務,而Redis的Lua部署被沙箱化,其腳本被阻止。換句話說,在Redis中,等待Lua進程完成可能會導致性能問題,而Tarantool則根本不存在這個問題。

當然,在比較Tarantool和Redis時,不得不提到其相對輸送量和延遲次數。在單個節點測試中,我們使用Yahoo! Cloud Server Benchmark’s (YCSB) 六個核心工作負載類型--“更新”、“大部分讀取”、“唯讀”、“讀取最新”、“短範圍”以及“讀取-修改-寫入”。

測試結果表明,Tarantool在所有工作類型的輸送量都要優於Redis。Tarantool在很多工作負載類型具有降低的延遲性,Redis則在某些工作負載有著較低的延遲性。這包括具有以及不具有預寫日誌(持久功能)的工作負載。

與Redis相比,Tarantool的最大優勢在於,與資料庫管理系統(DBMS)一起,Tarantool運行完整的應用伺服器。該伺服器可單獨運行,它包含Redis完全沒有的整套技術工具。

Tarantool應用伺服器的殺手鐧功能是它可與任何數量較慢的舊資料庫結合使用,從而加速其運行,這些資料庫包括Oracle、IBM DB2、MySQL、MS SQL Server和PostgreSQL。

Tarantool可編排及虛擬化其目標的資料,使資料可更快速地被訪問。向任何企業應用和服務架構添加Tarantool都可減輕集成和擴展的代碼庫,並降低對伺服器和硬體的需求。例如,一台Tarantool伺服器可替代幾十台運行傳統DBMS的伺服器,從而讓你可快速擴展微伺服器和應用程式。