Tuesday, January 28, 2014

MongoDB & Node.js

I've been exploring both Mongo DB recently, and Node.js. I keep hearing about how they are "hot" right now -- along with others, like angular.js.  As many of us know, though, using a technology just because everyone's talking about it is not justification for why we should use it. Each technology offers inherent functionality and benefits. It should be used because the application -- or the development team -- would perform better using that technology.

Can you justify the use of a particular technology in your project or are you using it just because it is "hot" and everyone is talking about it?

So, whenever I hear that a company is seeking a developer with skills in these two technologies, I am compelled to ask, "Why are you using this technology?" to better understand what it's about and why people are using it. I also ask it to see if this is a team I want to work with. If they don't have a good answer, chances are their projects are not well planned and designed. I am investigating the benefits and applications of each of these to better understand why I might use them in the future.

I was at She's Geeky last week and had some good conversations about both databases and identity (but that's another blog post). Sarah Mei led a session asking about MongoDB and its uses. Our group came to the conclusion that it is good for obviously, "unstructured" databases. But when do you need an unstructured database? are you trying to use an unstructured database, when really your data would perfectly fit into a tabular format?

The really valid uses for it seemed to be when 1) when you have a lot of user generated content, and 2) When the structure of your data may change often and be somewhat ephemeral. I've noticed that it seems to be used on a lot of music and media-related apps, in which both 1 and 2 could apply. I will elaborate on this later.

As far as Node.js goes, I am learning that it is great for uploading documents, generating reports, and generally performing non-blocking or asynchronous processes -- processes that may take some time, but you want to continue while allowing the user to perform another task concurrently.

In the next few days, I'm going to do some tutorials and get an example or two up. In the mean time, please tell me: How have you used node or MongoDB in your application. Why did you use it?

No comments:

Post a Comment