Last week we held our monthly techday, this time the topic was an introduction to NoSQL databases.
I gave a 30 minute talk about NoSQL use cases and the theory behind NoSQL databases (CAP theorem, eventual consistency, etc). Furthermore I discussed various types of NoSQL databases, ranging from document-oriented databases to column stores and “soft” NoSQL databases.
After the talk and some Q&A it was time to get our hands dirty and experiment with a few NoSQL databases. The group was divided in pairs and each pair chose one of the three databases available to try during the hands-on session.
MongoDB is a document-oriented store and one of the most practical NoSQL databases when building web applications (party because it’s strongly consistent). You can find a hands-on labs project on our GitHub. It was nice to see everybody got started quickly with Mongo. The attendees extended the Java labs project to store and retrieve additional documents.
Redis is often referred to as a key/value store but is actually a much richer data structure server. Interfacing with Redis is extremely simple (hence the great number of libraries) due to its simple telnet like protocol. The folks who were playing with Redis during the techday liked the simplicity but couldn’t immediately think of practical use cases (apart from caching).
Hands-on HBase and OpenTSDB
HBase is part of the Hadoop family of “big data” tools. It’s strongly consistent and meant to scale. What I find interesting about HBase is that it allows (near) real-time access to data in Hadoop, while Hadoop itself (e.g. MapReduce) is primarily a framework used for batch processing.
During the hands-on a couple of colleagues experimented with OpenTSDB; a time series database (or application) build on top of HBase. OpenTSDB is relevant for Avisi since we’re doing large scale time series analysis in one of our client projects.
In a month or so we’ll organize another techday (topic TBA). Keep an eye on our twitter in case you want to join. Pizza and beer is on us!
Do you have experience with NoSQL databases? Please tell us about it in the comment section below.