My Quest for NoSQL, Cloud Data, and Cloudant

Andrew Walpole
{{Nested Loops}}
Published in
4 min readFeb 13, 2013

A little over a year ago I saw the light when it comes to NoSQL schema for data storage. I got on a huge NoSQL learning kick, researched all the big players in DB software; MongoDB, CouchDB, Cassandra, Redis and Webdis on top of that. As I emerged from my underground research laboratory I was left with a conclusion and a question: “I really like this NoSQL stuff and see good practical uses for it in my little prototype experiments I like to do!” and “How do I start playing with this stuff… now and easily?”

You see, I do a lot of little prototypes, I like to flush out ideas and play around with all sorts of systems and data sets, and the quicker the better. A lot of these things get abandoned, but it’s more about the process than the end product for me. So I wanted to use NoSQL. This is where the barriers really started to pop up. It’s cool to go onto the MongoDB site and use the command line tools they have right on there to try stuff out, but that’s really kind of gimmicky. When it comes down to implementation, it’s just not as easy as you would hope — which is pretty common with developer tools in general.

So I started out with CouchDBX which is now the official CouchDB Package, and I have to say it wasn’t bad. I was able to run my couch server pretty easily on my local machine and I was able to hit the database from JavaScript and Flash. But I felt so confined. You see, it’s cool to play with a technology this way, but to implement a technology, I want my technology resources to be easily deployable. In this situation I’m still just left with a local environment which if I ever wanted to really host I would have to start all over, run/host a server, get everything installed. This works for your average sysadmin (or even the best sysadmins), but for me I want it to be easy, viable, and I want to avoid server technology at all costs.

So long story short, installing and hosting any NoSQL database was out for me. While I continued my search for easy data storage, I began to build my own solution purely in PHP, and It was actually a pretty cool experiment in itself. It didn’t scale well, it wasn’t super fast, it was the opposite of secure, it has some bugs and quirks still, but my solution was easy; it scored a 10 out of 10 on developer usability. I created RaccoonDB — the quick and dirty NoSQL solution — which in summary, is a Purely PHP library that uses SQLite within PHP to fake a NoSQL schema. So to the developer JSON goes in and JSON comes out, but it’s really getting stored into a relational database. The library can do basic filtering and on top of it I built a REST layer that allows you to easily insert, update, query, and delete data through browser calls or any language. It was data storage heaven for a while, but I still had the same problem as before; this thing is prototype-worthy but not even close to production-ready.

Enter Cloud Data. While I continued to play around with RaccoonDB, I kept my eye on better solutions. A few popped up, but a lot are paid for to host your own database for you. But there are 2 I want to specifically call out because I think they are doing it right.

First is Apigee’s App Services (formerly UserGrid) — they host your DB and expose an API on top of it to make it easier to put in and get out data. They have some really neat features like a user system already integrated and relationship modeling features that make life easier when associating your data with other data. The learning curve is a little higher than I would like, but it’s some really good NoSQL capabilities with little to no sysadmin effort on your part.

Second is Cloudant. I’m currently infatuated by Cloudant because they have made my vision come true. Cloudant provides a layer on top of CouchDB that exposes a REST API to easily insert, update, query, and delete data. Sound familiar? Cloudant is essentially RaccoonDB except it scales, is super fast and secure! In a few minutes I was successfully using Cloudant in JavaScript and have since began building an ActionScript 3.0 library to make it even easier for my mobile apps and experiments. Cloudant is paid for, but only if you accrue over $5/month in usage, which for prototyping purposes you won’t even come close to doing. Even if I only ever get around to using Cloudant for a high score table in a mobile game, I wish the service a prosperous future and hope you are able to use them too.

Disclaimer: I’m in no way being compensated or involved with the creation of Apigee or Cloudant. Though Cloudant’s support team has reached out to me to see if I needed anything (which is double awesome), I’m just a big fan of these services!

--

--

Andrew Walpole
{{Nested Loops}}

Developer, Designer, Teacher, Learner, Innovation Dabbler