技术开发 频道

内存数据库RedisVSTarantool谁是最强者?

  【IT168 评论】对于内存数据库,在Memcached基础上,Redis改进了持久缓存数据、使用字符串以外数据类型以及对数据执行复杂操作等功能。

内存数据库RedisVSTarantool谁是最强者

  而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的服务器,从而让你可快速扩展微服务器和应用程序。

0
相关文章