Sunday, November 21, 2010

MongoDB Impressions

I've spent the past three days diving into MongoDB and jQuery. Mongo is a document database that makes it very simple to work with data--it's basically object oriented vs SQL's rigid table structure. Smarter people than I can tell you about its flexibility and built-in scalability.

 

I'm attracted to it because I have a mildly complex page that crawls with SQL Server. L0ts of reasons for that--methods, choices, joins, amount of data, cursor, shared hosted machine,etc. I can improve the performance through a parameterized stored procedure and moving stuff into arrays intead of working through recordsets.

But the real attraction is the ability to work with syntax very similar to Javascript and JSON from client to server to database. Just better for my relatively weak, pan-fried brain.

PROS

  • clearly very simple to create, add, and query

  • incredibly flexible, of course.

  • consistent with client-side js

  • using the doc/obj model makes working with data very easy

  • I'm trusting that it scales brilliantly given the customer base and built-in scaling features.


CONS

  • not out of the box ready, so for guys like me it's a pain.

  • Would be great if I could skip assembling the pieces on top of it to pass and receive data/commands through AJAX or my app server (ASP; the C# driver is available but I'm on a shared server at the moment).

  • requires drivers installed at server for specific app server implementations.

  • 3rd-party REST interfaces are python or RoR based, from what i can find. I'm not a python, perl, or RoR developer

  • There's no simple server-side JS implementation without having to build a stack; Node plus driver plus JS server...so lots to config, learn, etc in poorly connected reference material.

  • Doesn't cater to the general developer; definitely more geared toward the linux > php/python/RoR crowd.I'll likely switch to RoR post-seed round, but don't have the time to learn yet another thing.


10Gen should consider doing what Microsoft and now Apple do very well: make it dead simple for developers of all stripes. Lots of examples, instant connectivity, tons of working samples across multiple platforms (ASP, ASP.Net, CommonJS, Python, RoR, Perl). Turn developers into heroes. I think it would scale faster by inviting the MSFT dev community in more aggressively, really building out a variety of drivers there, make it dead simple for VB/.Net developers.

Adoption would move faster, creating greater desire and need for training, custom stuff, etc. I know there's some religion with the Anything But Microsoft crowd, but there's still massive numbers of MSFT devs and companies out there. Maybe it's too early...dunno.

So far there's no mainstream competition in the docs db space. The company that makes it just work without platform obstacles will do great.

In the meantime I'm sticking with SQL Server so I can at least launch; I'll simply cut down what I'm trying to do per page, move recordsets immediately into arrays and work with them there with JS and JQuery. Find me a JQuery/JS app server with a Mongo driver and I'm in heaven. When I look at my time horizons, I have to map out when I can learn an entirely new platform (Rails, for instance) vs getting an iteration out the door using the tools I know.

So Mongo isn't the obstacle; my lack of knowledge of Rails, Perl, or Python is.

No comments:

Post a Comment