Microsoft’s new open source subsidiary has released its first offering - a new version of Redis for Windows.
When Microsoft recently announced it was starting an open source subsidiary called Microsoft Open Technologies, Inc., the news was greeted with a mix of suspicion and derision.
The fact Open Technologies is a subsidiary could be taken as a sign that Microsoft, despite having to acknowledge the existence and importance of Open Source, is still trying to keep it as a side-line to the ‘real’ work.
The suspicion takes the form of ‘NOW what are they up to?’
Microsoft’s official line is that while this is a subsidiary, all the major product groups within Microsoft work with open source.
As Jean Paoli said in a blog post about the new venture:
“It is important to note that Microsoft and our business groups will continue to engage with the open source and standards communities in a variety of ways, including working with many open source foundations such as Outercurve Foundation, the Apache Software Foundation and many standards organizations. Microsoft Open Technologies is further demonstration of Microsoft’s long-term commitment to interoperability, greater openness, and to working with open source communities.”
Paoli says that the existing Interoperability Strategy team will form the nucleus of the new subsidiary. The team has been working on open source options such as the ability to use Node.js, PHP and Java in addition to .NET in Windows Azure.
The team has now announced its first release in the new company by way of a new version of Redis on Windows, the open-source, networked, in-memory, key-value data store.
Redis (REmote DIctionary Server) has been rising in popularity over recent years, and is probably more highly regarded than rival key-value data stores such as Cassandra. It was first developed by Sicilian developer Salvatore Sanfilippo, and would probably have stayed a minor player as Sanfilippo was working on it as a hobby, but VMware hired Sanfilippo to work on Redis full time and the project took off.
The advantage of Redis lies in the way it is used. Imagine you’ve got a database such as MySQL running as a backend server for storing and retrieving records. Your app becomes successful, and MySQL starts to struggle to keep up with the volume of data. You might think of incorporating something like memcached to give you an in-memory data cache to speed things up, but that really only gets you a store, and your back-end server still has to do handle all the queries and server-side operations. You end up coding to handle the interactions between the memory cache and the server, which means more work.
Redis gives you a key/value store that knows about server-side operations and comes with the most widely used query operators, so you get most of what you’d need in terms of querying data with the speed of the in-memory store.
On the Microsoft side, the major improvements in this latest version are around the need to save data on disk. Redis on Linux uses an OS feature called Fork/Copy On Write, but Windows doesn’t support this, so as Claudio Caldato, Principal Program Manager at Open Technologies blogged,
“we had to find a way to be able to mimic the same behavior without changing completely the save on disk process so as to avoid any future integration issues with the Redis code.”
Caldato says that the new Redis on Windows version implements the Copy On Write process at the application level. The team has added code to Redis so that some data structures are duplicated in a way that means Redis can still serve requests from clients while saving data on disk. This mimics the Fork/Copy On Write action in Linux.
Caldato says the code isn’t production ready, but is a prototype version to solicit feedback.
The code is on GitHub and if you want to find out more, check out the interactive tutorial Try Redis.