Sunday, November 08, 2009

"always on" MongoDB installation on my laptop

I spend a lot of time experimenting with infrastructure software, sometimes for customer jobs and sometimes just because it is fun to learn new things. For non-SQL data stores, I have spent a lot of time in the last year experimenting with and using CouchDB, AppEngine datastore, Tokyo Cabinet, MongoDB, Cassandra, and SimpleDB. Tokyo Cabinet and SimpleDB store hash values as strings, and don't have the great client APIs that the others have because limitations in string-only hash values. That said, for an Amazon hosted application SimpleDB can be a good choice and Tokyo Cabinet is light weight and easy to install and use. Casandra looks great, and as I have written about here before, Cassandra is easy to use from ruby and has great features.

MongoDB has great performance and similar capabilities as Casandra. Chris Kampmeier has a great writeup that covers installing MongoDB on OS X, including setting it up as a system service. I followed Chris's directions. A pleasant surprise is that MongoDB has a light footprint, and leaving it running as a service like I do with PostgreSQL and MySQL is reasonable.

Along with the mongo and mongo_record gems, MongoDB is an awesome tool, and always keeping it running makes it easy to experiment with. BTW, I also keep Sesame and CouchDB running on my local network for much the same reasons.

8 comments:

Alessio said...

Do you ever tried Project Voldemort (http://project-voldemort.com) a really interesting distributed key-value storage system, enterely written in Java. It is used by LinkedIn in the backend. Really a god piece of software.

Mark Watson, author and consultant said...

Hello Alessio,

I have read about Voldemort but have never installed it and experimented with it. Have you tried it?

For my projects and interests, using a combination of PostgreSQL, MongoDB, Sesame (RDF datastore and SPARQL endpoint), and perhaps CouchDB is sufficient.

I would use CouchDB more, but implementing authentication is a real nuisance - authentication is built into MongoDB.

-Mark

Alessio said...

Hi Mark,

Yes, we are testing project Voldemort for a lexical reverse indexes in our project (Mnemoo.com). Basically we need to manage really big reverse indexes (>10TB), and Voldermort seems to be the only K/V that is able to take care of such big indexes (distributed on 5 servers). The key point is the insert/update speed (under testing).

We never tested MongoDB/CouchDB, do you think this can be a valid solution in terms of speed / data size ?

Mark Watson, author and consultant said...

Hello Alessio, just based on the documentation, it looks like Voldemort looks good for distributing indices over several servers. Good luck with your project - it looks interesting.

Mark Watson, author and consultant said...

BTW, I withdraw my comments on authentication being difficult for CouchDB - see my blog from last night.

dumbhead said...

Hi Mark,

If you could explain how to compile Tokyo Cabinet in Windows for Java (no Ruby), that would be nice. I haven't been able to, and can't find anything on the web.

Brian

Mark Watson, author and consultant said...

Hello Brian, I don't need Tokyo Cabinet installed on Windows for my work, so you need to figure that out yourself. Do you have cygwin installed? Yokyo Cabinet built easily on OS X, so I think that if you have a complete cygwin install on Windows that it might build OK.

dumbhead said...

Apparently its not something the average programmer can do in a half hour, I tried under cygwin, but I'm not an expert in that. I have seen some archived email discussing problems compiling it under cygwin that were discussing C byte level code, and some other projects in Japanese. But for the right person,it might be a good opportunity.