Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News RethinkDB Has Ported Their Database to Windows

RethinkDB Has Ported Their Database to Windows

RethinkDB has launched a Windows port of their database. This version of RethinkDB took a year of development, runs on Windows 64-bit and it is currently in beta.

Considering the large amount of time spent on this port, we asked Michael Glukhovsky, co-founder of RethinkDB, to provide more details on the Windows version of their database.

InfoQ: What were the most difficult parts in porting RethinkDB to Windows?

MG: RethinkDB relies on platform-specific APIs for asynchronous I/O. The relevant APIs on Windows are very different from Linux's epoll or OS X's kqueue. On Linux, developers use epoll to get notifications that let them know when a descriptor is ready for reading or writing. On Windows, developers use I/O Completion Ports (IOCP), which entails queuing up asynchronous operations that emit notifications when they succeed or fail. Adapting our build system was another major point of difficulty. We had to get all of our third-party open source dependencies to compile consistently on Windows.

InfoQ:  Does RethinkDB retain a common codebase across different operating systems?

MG: Yes, RethinkDB has a unified cross-platform code base. There are, however, platform-specific code paths that rely on native platform APIs. In our GitHub repository, we have an arch directory that contains all of the platform-specific code. We estimate that three to four percent of RethinkDB's source code is specific to an individual operating system.

InfoQ:  Will the Windows version have feature parity with Linux and OS X?

MG: RethinkDB on Windows is functionally equivalent to its Linux and OS X counterpart. The database's features work consistently on all three platforms. We are, however, still optimizing the Windows port to bring it up to performance parity

InfoQ:  What are some of the features that you have on the roadmap?

MG: For our new Windows port, we're working on making it so that you can run the database as a Windows service. More generally, for the database itself, we are implementing some security features like support for database user accounts and permissions. We are also working to expand the database's real-time capabilities, making it possible to use change feeds with a wider range of operations.

RethinkDB is an open source distributed and scalable database that can be configured to push data change notifications to the application in real time instead of having the application continuously polling the database for changes. InfoQ introduced RethinkDB in the past.

Kyle Kingsbury, author of the Jepsen series, recently put RethinkDB to tests to verify if it supports linearizable operations using majority reads and writes. Kingsbury concluded:

As far as I can ascertain, RethinkDB’s safety claims are accurate. You can lose updates if you write with anything less than majority, and see assorted read anomalies with single or outdated reads, but majority/majority appears linearizable.

For more details on this we recommend reading Kingsbury’s detailed post on the test performed and the results.

Rate this Article