The Redis Labs Company develops a dedicated database for real-time applications required to handle massive amounts of data. The database by Redis Labs belongs in the NoSQL category, used by organizations that produce structured and unstructured data, including defense/security, financial and other organizations.
"Relational databases were built decades ago to store data in table format," the people at Redis Labs explained in an interview with IsraelDefense. "The era of Big Data demands other capabilities for unstructured data (video, images), handling of massive data volumes, an option for simply expanding the database and high-speed performance."
It should be noted that Redis Labs does not operate in a new market. NoSQL category databases, including MongoDB, Cassandra, neo4j, ElasticSearch, and others, have been around for years. "While in the past an organization would acquire a single database for all of its uses, today the world has changed. Each database offers a unique added value, and the client selects the database that is most appropriate for the required use," explains Tal Shkolnik, senior architect team leader at Redis Labs. "Our advantage stems from simplicity and performance."
The solution Redis Labs offers is an open source code (BSD licensed), with the Company offering support services and extra elements not found in the open source code. As far as the configuration aspect is concerned, the database by Redis Labs operates in an In-Memory configuration, which means working on the basis of the high-speed RAM. Additionally, an optional configuration incorporates an array of SSD drives for data not required in real time. In this way, data is transferred between the environments, according to need. Required data is stored in the volatile memory, while other data is stored in the SSD drives. Redis Labs has recently cooperated with the Intel Corporation in connection with the Intel Optane DC technology – a memory layer between the RAM and the SSD drives, intended to improve the performance of the memory.
"Clients do not have to replace their existing database infrastructure," explains Frida Bronfman Bennett, the Company’s Sales Manager for Israel. "Redis may be installed as an additional layer that functions as a connecting link between the existing database and the application, so that the read and write requests will pass through it. In this way, it will prevent the bottlenecks that developed in the past when the demand for the traditional database increased."
The people at Redis Labs explain that the demand for using the database comes mainly from the developers in the field. The reasons are the simple operation, prompt deployment and excellent performance of the product. "In today's reality, if a web user fails to receive a response from a website or application within a few seconds, he will go to the competition. Users want a prompt response, and in some cases, this is the only differentiation the organization has vis-à-vis the competition," says Amir Levi, senior international sales manager at Redis Labs. "Clients get stuck with bottlenecks in the performance of existing databases, and Redis provides a solution. In the online retail industry, for example, submitting a suitable proposal to the client at the appropriate moment will give you an advantage over the competition. This is the difference between a sale by your organization and a sale by a competitor."
To enable the high-speed response, Redis Labs uses several capabilities. One of them is the use of the C programming language. "When you use the C language, there are no issues of memory management, garbage collections or heap," explains Shkolnik. "The user may write in any one of the 48 programming languages we support, but the database works with C. Another capability is the use of data types that enable the user to operate intelligently opposite the database. The use of data types enables the parties to exchange data (question-answer) with accurate granularity, which significantly improves effectiveness. Yet another capability is asynchronous operation opposite the database. You can wait for the answer after completing an operation – or choose not to. It all depends on the needs of the application."
The Concept of Simplicity
Another performance-enhancing aspect is the simplicity of installation and deployment. At Redis Labs, they explain that the installation of a server cluster for other databases can take up to two weeks, while with Redis it takes less than an hour. "Along with the prompt deployment, this database accompanies the developer from the very first stages of the development process, including the stage when success finally arrives, which generates thousands of inquiries directed at the database," says Shkolnik. "When a developer starts working with a new application, he cannot always guess where the bottlenecks will be. Some databases are intended for a certain amount of inquiries, and when that amount is exceeded, the delay in their response will increase. With our database, there is a rigid delay from the starting point and along the entire time axis, regardless of the number of inquiries directed at the database. If the number of application users increases, we will add more servers (links) without disabling the application."
The option Redis offers of increasing the number of servers without compromising the service or affecting the delay is based on the concept of simplicity. A proxy server developed by Redis Labs manages the processes. Each process handles a predetermined number of keys (each key represents a dataset) in each server. Each one of these processes is independent and requires no synchronization with other processes. In this way, processes may be added without affecting the existing processes, with the application itself aware of the processes associated with it or addressing the proxy server that directs the requests to the relevant processes. "We support a cloud configuration and a local configuration. Additionally, multiple automation processes in the database simplify the management for the user," explains Shkolnik.
One of the questions that arose during the interview was how an organization should decide which database to use. Well, at Redis Labs they explain that the selection of a database depends, first and foremost, on the application you wish to develop or support. "If the application is being built from scratch, the organization will normally choose the database most suitable for the task at hand and would start developing based on that database. If the organization already has a database, it may not want to change the entire infrastructure, and will therefore prefer to use our database as a mediating layer," they explain at Redis Labs. "There are considerations such as the price of the hardware for a dedicated solution, the cost of the installation and deployment time, the amount of resources it takes to manage the database and considerations regarding the point in time where you realize that the solution is unable to 'carry' the application and has to be replaced. These are the considerations an organization will normally ponder on the way to selecting a database."