Kyle Banker is a Software Engineer at 10gen (the company responsible for creating and maintaining MongoDB.)
At 10gen, Kyle maintains the MongoDB Ruby Driver and supports the Ruby developer community. He is also currently authoring the upcoming book MongoDB in Action.
Kyle has given a number of talks at various conventions as well as at MongoDB conferences in San Fransisco, New York, London, Paris, and more. You can view some of Kyle’s presentations in our video sections: Ruby / Schema Design …
Follow Kyle on Twitter @Hwaet …
LM: Can you tell us a little about yourself?
Studied philosophy and lit in college. Taught high school English and choir. Then became a software developer. Got interested in databases, fell in love with MongoDB, built try.mongob.org, and currently have the great fortune of working for 10gen.
LM: You maintain the MongoDB Ruby driver … how closely does the driver match the core MongoDB features? Are any features missing?
I think that the driver has a pretty nice API, overall, which isn’t far from what you get in the MongoDB shell. Those of us at 10gen who work on drivers have tried hard to provide a consistent API, making it easy to move from one driver to another.
We’re currently trying to decide how the drivers can best support replica sets. It’s likely that you’ll soon be able to configure your driver connection to send reads to secondary nodes; you’ll also be able to set a write concern for a given connection, database, and operation.
LM: Is there anything unique or interesting about the Ruby driver, were there any challenges in creating it?
Well, I can’t claim to be the original author of the driver. One of 10gen’s early employees wrote the first version; Mike Dirolf then took it over and authored the C extensions for BSON.
But over the past year, I’ve done some pretty significant refactoring, rewritten the GridFS implementation, and increased performance by about 30%. I’ve also done a lot of work on a JRuby branch, which, it turns out, isn’t as fast as we’d like. So I’m going to be trying a difference approach. As you might be able to tell, the biggest challenges with Ruby surround performance.
10gen’s Kyle Banker Presenting MongoDB at RailsConf
LM: In your opinion, what is the most interesting or exciting feature currently in the works for the next verision of MongoDB?
The next stable version of MongoDB will be 1.8; 1.7 development releases will start appearing this week. The one definite improvement that I can speak about for 1.8 is single-server durability.
We’ve heard enough concern about MongoDB’s lack of single-server durability to warrant this new feature; it’ll be implemented in the standard way, as a kind of append log that’s replayable in the event of a server crash.
Personally, I’d still much rather rely on replication for durability since that maintains the highest performance and ensures the fastest recovery. But for those who need it, the single-server option will be there.
LM: MongoDB’s development process is somewhat unique given that it’s open source and features are driven by user request/demand … yet it is produced by a commercial company. What advantages and/or disadvantages has this model created?
Probably the biggest advantage is that there are currently twelve engineers who are paid to work on the project full-time. This means that the core server and drivers advance at a pretty brisk pace; bugs are frequently fixed the same day they’re reported; and users get tons of free, near-instantaneous, expert support via the mongodb-user list and IRC.
That the technology is open-source means that developers get to use and learn from it for free. And for those enterprises that need support or training, there’s a highly qualified company there to provide it.
I’ve seen some people take issue with the core server’s AGPL licensing (the drivers are Apache-licensed). But all this means in practice is that if you modify the core server software, you have to publish the changes. That may be perceived as a disadvantage; I view it more as fair trade-off.
MongoDB In Action
LM: You are currently in the process of writing a MongoDB book MongoDB in Action. What are your goals in writing this book? Do you have a particular audience in mind?
The book is geared toward application developers. It includes a lot about schema design, including a design-pattern appendix, and it uses e-commerce at its primary domain for the examples. But substantial portions are also devoted to deployment, replication, auto-sharding, and troubleshooting.
LM: Given MongoDB’s uncommon process and pace of development, how did you chose what areas and features to focus on while making sure your book stands the test of time?
Certainly technical books are anything but timeless. But features like MongoDB’s query language, indexing strategy, and data model are all pretty much set in stone, so I don’t anticipate any obsolescence there. One advantage of this book is that it’s going to be published after the release of MongoDB 1.8.
Since replica sets and sharding only appeared in production within the last month, we’ll see a lot of maturation and new features over the next couple months, and all of this will make its way into MongoDB in Action.
LM: Is there a publish/due date for a book yet? When might we expect to be able to get our hands on it?
Yes. The book will be available in print form by February 2011. The writing is nearly half-way complete, and chapters are already being released as part of Manning’s early-access program (http://manning.com/banker).
LM: As a self professed linguaphile: what is your favorite word and why? (And hwæt doesn’t count.)
Well, I can’t say that I have a favorite word, but since you mention “hwæt,” let me say that I do really love single-syllable Germanic words: they’re one of the great features of English. Here are a few choice morsels: bridge, daft, oak, glib, knob, chest, and smidge. Say those aloud a few times and you’ll see what I mean.