Compare Tarantool with Redis and Memcached
Memcached? Let's look at the main differences, so that it is easier for you to decide.
Tarantool and Redis
As for the
Rediscompared with the
Memcachedimproved storage capabilities of cached data, the use of not only string, but also other types of data, as well as performing complex operations with data  . In Tarantool operations on data groups have reached an even higher level of complexity, and in terms of reliability of storage
(persistence)and indexing they are
Redis, not to mention the speed of work and user support  . Given the development of storage facilities, as well as the ability to work with transactions and large amounts of data,
Tarantoolyou can effectively use the application as the main database - frankly, such a feat
Redisnot always on the shoulder  .
The main drawback
Redisis the inability to process data volumes more than the amount of server RAM. In the
Tarantoolsame you can choose storage engines:
Memtxworking as a traditional
Vinyl/Disk, allowing the use of disks in combination with RAM.
Vinylallows you to work with data whose volume is 10-100 times greater than the available amount of RAM  . This was achieved by using the LSM tree
(log-structured merge tree)instead of the more common B tree, which ultimately eliminated random write operations - the bottleneck of disk engines  .
Tarantoolsupport scripts on
Lua, that is, they allow you to apply complex functions to the data. In addition, both databases can be supplemented with certain packages from the ecosystem
LuaRocks. But right out of the box it
Tarantooluses a faster
LuaJIT, unlike vanilla-
Redis. It is also
Tarantoolequipped with a full-fledged, non-blocking
Luaapplication server that has access to the network and external services. At the same time, it is placed in the “sandbox” in the
Lua, and scripts are blocked  . That is, waiting for the completion of
Rediscan reduce productivity, and in
Tarantool There is no such problem: while one call is blocked on an external resource, another active call, which is simultaneously being executed, continues to work.
Of course, comparing
Rediswould not be complete without even a brief mention of their relative throughput and delay levels. Testing on the same node using the benchmark
Yahoo! Cloud Server Benchmark (YCSB)with run of six basic types of load -
read-modify-write- showed that, for the indices
Tree Tarantoolis ahead
Redisin all types of loads. Also in most cases u have
latency. This applies to loads with proactive logging and without it.
Tarantoolis due to the work in tandem of a database management system
(DBMS)and a full-fledged application server  . This server, which can be used separately, has a whole set of additional tools, but
Redisthey do not. One of the interesting features of the application server
Tarantool- the ability to interact with other, slower database for the purpose of caching of information stored in them, and thus accelerate their work: this refers to the
MS SQL Serverand
TarantoolOrchestrates and virtualizes data, accelerating access to it. Using
Tarantoolin the architecture of almost any enterprise applications and services can reduce the integration and scalability codebases, as well as reduces the requirements for servers and equipment. For example, one server
Tarantoolcan replace dozens of servers on which the traditional one runs
DBMS, so you can quickly scale your microservices and applications  .
Tarantool and Memcached
Tarantool (2009)belong to two different generations
in-memoryof caching-based databases. So in a sense, comparing them is not too fair, since more recent technologies usually outperform earlier ones. But if the technology appeared later, this does not mean that it is better suited for some task. Sometimes less advanced tools are preferable for certain needs. We will proceed from the assumption that you are choosing between
Tarantoolfor your new application or, perhaps, are considering whether to continue supporting the legacy installation
Caching versus smart caching
Memcachedis simple and good. The applications that use it check to see if there is any requested data in
Memcachedit before invoking the slower database it is paired with. However
Memcached, the associated database may also be out of sync due to a failure to update one of them, because both of them are not replicated, and the application interacts with them separately. As
Tarantoolthis problem is solved with the help of "smart" caching: the update is completed only after a successful update conjugate database. That is, instead of interacting with two levels, the application only interacts with
Tarantool, which is responsible for updating the conjugate database. In addition, at any time, you can connect to the data processing
Luaapplication server, working simultaneously with the database server.
Read and write
The main difference between the two caching methods is their ability to handle read and write operations in related databases.
MemcachedDesigned to reduce the load on reading, but not on writing. The
Tarantoolsame processing is implemented good reads. Its high utilization efficiency
CPUcan help reduce the amount of costly replicas for slow DBMSs. Moreover, the
Tarantooldeveloped processing capabilities of write operations. It writes to disk synchronously and therefore can replace disk DBMSs. In addition, recording operations in
Tarantoolfull compliance with the principles
Memcached, there is no data in it, so all selection operations
(select)must be transferred directly to the conjugate database. This
Tarantoolis solved by restoring data from saved files.
Ease of use
Memcachedeasy to install and allows you to quickly perform queries
SET, which in some situations is quite enough.
Tarantoolit is also easy to install, but due to more developed functionality it has a more extensive syntax. However, if you master it, you will be able to apply it
Tarantoolin a variety of fields - from microservices to the aforementioned highly loaded transactional data processing, corresponding
Memcachedwas created to support other databases.
Tarantoolalso works in conjunction with other databases, but can function completely independently, which is not typical for cache solutions. This is achieved with the help of reliable data storage, a full-fledged application server,
ACIDtransactions, the ability to work with data whose volume is more than RAM. In fact,
Tarantoolit can not only work independently of a relational DBMS, it can do without an additional backend in the form of a relational DBMS. You can program for a
Luacomplete program in the same way as with traditional stored procedures.
Tarantoolyou can easily scale by adding new machines, although you will have to take care of how to distribute data among nodes. Additionally,
Tarantoolthere is a built-in sharding mechanism that allows you to scale the cluster automatically. You can read more about this mechanism here .
As you can see, when choosing between
Tarantoolwill have to take into account many points, from synchronization problems to scaling. If you have any questions about
Tarantool, write in the comments.