I had an amusing phone interview. I asked what database they were using, and he said MongoDB and mySQL. I asked why MongoDB is better than mySQL. The clueless interviewer replied (paraphrasing) “Setting up a relational database schema is too hard! It’s easier to use a key-value store where you can just stick in arbitrary JSON objects.”
That’s amusing, and what I already suspected. People “prefer” MongoDB because they’re too stupid to set up a relational database and configure it correctly. NoSQL is most attractive to clueless twits. If your data has any kind of nontrivial complexity, such as needing joins, a relational database is better.
(Also, if you want a key-value store, you can have textblobs of JSON in a real database. However, it’s been a mess every time I saw it.)
The interviewer was also complaining about one of his “idiot coworkers” who preferred to do everything in C. He also gave me a technical test. I’m undecided whether I should do it, refuse, or never answer. I do want to meet the guy who likes to do everything in C. After having seen several different “modern”/inefficient languages, I’m thinking of just sticking with C/C++, and writing good libraries for whatever common tasks I have.
Businesses like Google, Facebook, and Twitter need their own custom database, which is some type of noSQL, due to their large volume of data. Your stupid startup isn’t Google. Stick with a real database, and when you get lots of users, then work on improvements (either optimizing your database or switching to noSQL for bottlenecks). People pick noSQL because they want to be “cool like the big boys”, without thinking if it’s appropriate.
Speaking of interviews, I had another amusing conversation.
Twit: What are your rates?
FSK: $X/hr
Twit: What are you getting paid now?
(I know it probably was a mistake to answer.)
FSK: $Y at one job, $Y+epsilon at my other job.
Twit: Oh, so then, if I offer you $Y+epsilon/2, then you’ll be happy!
FSK: Why would I switch jobs for an epsilon/2 pay increase? Do you think I’m an idiot?
[Also, given that I know he's going to be difficult to work with, there's no reason for me to compromise on rates. For $X, I'd be more willing to put up with his nonsense. Actually, $X is probably too low, given that I know he's going to be very annoying.]
” People “prefer” MongoDB because they’re too stupid to set up a relational database and configure it correctly. ‘
I use SQL, I also use MongoDB.
Momma says I’m not not stupid like the post said I am.
CRUD is CRUD.
Works for both far as I see it.
Then again, I’m not exactly splitting the atom at work either.
Momma says ‘shut up’.
A brilliant argument. You totally convinced me that I’m wrong.
I see this comment thread is going to go like the node.js and Ruby on Rails posts.
It certainly is possible to use MongoDB and noSQL correctly. If you’re using noSQL when you don’t have many customers or much data, you’re almost definitely doing it wrong.