If you pay attention to the annual “StackOverflow Developer Survey”—and, as a DBTA reader, you probably should—you might be interested in how developers use and rate the various database platforms. Usage responses are unsurprising; MySQL, SQLite, SQL Server, and PostgreSQL all show up as the most widely used databases. But when you look at the most “loved” databases, the results are actually somewhat surprising—Redis consistently shows up as the most loved database platform by developers.
For database professionals, who are accustomed to enterprise DBMS systems such as Oracle and SQL Server, Redis barely seems to be a database at all, and, indeed, Redis is often used more as a cache than as a database of record.
Redis (REmote DIctionary Server) was created by Salvatore Sanfilippo in 2009 and initially envisaged as a simple in-memory system capable of sustaining very high transaction rates on underpowered systems, such as virtual machine images. Redis follows a familiar key-value store architecture in which keys point to objects. In Redis, objects consist mainly of strings and various types of collections of strings (lists, sorted lists, hash maps, etc.). Only primary key lookups are supported; Redis does not have a secondary indexing mechanism.
Although Redis was designed to hold all data in memory, it does support swapping out data to disk and uses snapshots and write-ahead logging to ensure that data is not lost in the event of failure. So, while Redis is relatively simplistic when compared to an enterprise DBMS, it is a true database that shines when the objective is to achieve very high transaction rates for simple operations. It is popular among developers because of its simplicity, reliability, and performance.
Redis was originally entirely licensed under a BSD [Berkeley Software Distribution] open source license. However, along with a cohort of open source software vendors, including MongoDB and Elastic, Redis (the company) became concerned about hyper-cloud vendors’—particularly Amazon’s—use of the software. The worry was that these cloud vendors might sell hosted Redis services within their cloud platforms without paying license fees to the software creators or contributing in any meaningful way to the open source software projects.
Amazon has a particularly poor track record in this respect. Many, maybe even most, Amazon Web Services offerings are based on open source projects, and Amazon monetizes these very successfully as hosted services. Critics argue that Amazon rarely contributes significantly to the open source codebase, and, in many cases, has instead forked the code and kept their enhancements private. Amazon counters that it is simply operating within the terms of the open source licenses and points to its contributions to open source (which, it must be said, are much less significant than those from other companies of comparable size).
The Redis company has evolved its license in a manner that inhibits free usage of the software by cloud vendors. Possibly in response, Amazon has announced MemoryDB for Redis—a Redis-compatible service that supports the Redis API set without relying on the entire Redis codebase.
MemoryDB has a fairly hefty price when considered against comparable Redis-based services, but, as with all Amazon offerings, it is bound to find a niche with some customers. The Redis company will continue to exploit its popularity with developers in its cloud offering so both parties will continue to thrive.
However, this latest Amazon service represents a continuation of a concerning trend. Over the past few years, we’ve seen open source vendors move their licensing away from pure open source to prevent exploitation by the hyper cloud vendors. The cloud vendors are increasingly responding by creating API-compatible “clones” of the open source projects. We’ve seen examples of this with MongoDB and Elasticsearch, as well as with Redis. If these trends continue, then open source may become less open, and a schism in functionality may emerge between the cloud-based clones and their open source progenitors.