內存資料庫大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的伺服器,從而讓你可快速擴展微伺服器和應用程序。
※iPhone 8對遊戲開發程序員影響最大!買不起也要看看!
※寫給軟體測試程序員:這5大點必須提起注意!
※高性價比的極致影像表現!奧圖碼UHD620 4K投影儀評測
※10+2款高級APP自動化測試工具,趕緊收藏!
TAG:IT168企業級 |