First commit to CouchDB, at last
Finally, after 10 years, 146 lines of my own in CouchDB 💪.
I joined Cloudant just over ten years ago, when it was still a startup of thirty. And only now have I made my first PR to CouchDB, the open-source database that undergirds Cloudant’s service. Why so long? Well, I spent those ten years playing my part by building many parts of the service around the database.
But I’ve always harboured a desire to work more on the database. Reflecting over Christmas, I felt that I’d really like to make this year the one where I build up my skills in both Erlang and the database.
Having made this decision, this PR is a nice thing to have gotten done within the first month of 2023. While not groundbreaking, it’s not trivial and so I’m pleased with it for a first effort. The PR improves query processing by shifting some work down to the machines hosting the database shards, reducing cluster network traffic. The only real complexity lies in not breaking things while the cluster is in a mixed-version upgrade state – the query is distributed so can be being processed simultaneously by old-version and new-version nodes. Ensuring that behaviour is always correct as nodes are upgraded at different times across the cluster took a little head-scratching.
My favourite thing about the work is that it lays some groundwork for other improvements in query performance, such as those described in this RFC I’ve written. After that, I’m not yet sure where to look. I’ve been digging into a few deeper bits on database querying which could be interesting. But there are many other places I could usefully contribute.
It’s nice to be writing more challenging code again.