My problem with NoSQL is that you MUST know there won't be changing requirements:
Later you might need to do the equivalent of joining 3-4 tables. Then you have trouble... But I'm a coward that look both left and right before crossing a street.
"My problem with NoSQL is that you MUST know there won't be changing requirements"
I thought the main advantage of document-oriented schema-less databases (I haven't used MongoDB but I have used CouchDB) was that they are supposed to give more flexibility in the early stages of projects.
NB Personally, I've moved to PostgreSQL and its JSON storage as then you get most of the benefits of both worlds.
> I thought the main advantage of document-oriented schema-less databases (I haven't used MongoDB but I have used CouchDB) was that they are supposed to give more flexibility in the early stages of projects.
Depends on your requirements, I guess. If you want to maintain even eventual consistency, any update that crosses document boundaries has to be thought about very seriously in order to avoid breakages in the face of concurrent modifications. So, ideally you design your documents such that any one logical operation only has to hit one document.
This is pretty easy for very simple tasks, but can get rapidly more difficult in the face of more complex or changing requirements. I suspect a substantial proportion of Mongo or Couch based applications simply ignore this problem, and are lucky that they don't have enough concurrent activity that stuff breaks frequently.
Using Postgres/JSON neatly avoids this problem because you get ACID back, and you can do cross-document updates all you like.
Well, that's why I gave up on CouchDB once I found that I was actually much happier with the hybrid approach of using JSON documents inside a relational structure.
MongoDB is actually well suited to changing requirements.
Because it is schema less and document based you can trivially add new rich schemas to existing documents. And in the case of doing joins you can always do it in application layer or using DBRef or MapReduce. There are valid options that are still quite performant.
"Because it is schema less ... you can trivially add new rich schemas" made me lol. Maybe this makes sense to Mongo users, but I have no idea what you mean here and the language you use to describe this feature is, well, contradictory to say the least.
it means a typo in release-15 auto-creates a whole new database without anyone noticing and you sit around and wonder where all of the data went yesterday.
Just today I enjoyed explaining to a developer why his insert into a timestamp failed because of formatting, with a nice english error message. Thanks Postgres!
Whereas the same thing last year with Mongo just inserted the wrong date into a misspelled key and we didn't figure it out for days.
Actually it does seem contradictory reading back on it. I meant it doesn't have a fixed, enforced schema like SQL databases and it is easy to add new data structures e.g. lists, maps, sets.
NODE.JS positions in Berlin/Germany—all full-time and permanent
Top 5 reasons why you should move to Berlin, now:
1. Lowest livings costs with highest quality of living. Stay in gorgeous, perfectly renovated apartments in pre-WWII residential buildings with high ceilings, right in the middle of the center and pay a fraction of costs of any other capital (even cheaper than any Eastern European capital). No need for a car—Berlin has one of the densest subway nets and wide streets make biking fun. In addition, Germany has an amazing social health care system including health, unemployment and pension (when working as an employee).
2. A vibrant and fast growing ecosystem of smart people. A vast number of new software talents, founders, software companies and VCs are moving to Berlin, every day (Twitter, Google, Soundcloud, Early Bird and many more).
3. People here are open-minded, outgoing, mix well and international—no need to learn German, everyone speaks English! Making new friends is a matter of days. Visit tons of networking and startup events, every week.
4. Easy work permissions—Europeans do not need any and can work from day one and the rest applies for the hassle-free Blue Card.
5. Berlin's night life is unmatched, huge and changing every day (plus ridiculously cheap). Berlin has got some of the most dazzling, naughty, and original clubs on the face of the Earth.
Berlin is calling and getting the new tech hub of Europe. If you are passionate about building great software, we’d love to talk with you. If you don't live in Berlin yet, we could help to fix that.
NODE.JS, ANDROID and PRODUCT MANAGEMENT positions in Berlin/Germany—all full-time and permanent
Top 5 reasons why you should move to Berlin, now:
1. Lowest livings costs with highest quality of living. Stay in gorgeous, perfectly renovated apartments in pre-WWII residential buildings with high ceilings, right in the middle of the center and pay a fraction of costs of any other capital (even cheaper than any Eastern European capital). No need for a car—Berlin has one of the densest subway nets and wide streets make biking fun. In addition, Germany has an amazing social health care system including health, unemployment and pension (when working as an employee).
2. A vibrant and fast growing ecosystem of smart people. A vast number of new software talents, founders, software companies and VCs are moving to Berlin, every day (Twitter, Google, Soundcloud, Early Bird and many more).
3. People here are open-minded, outgoing, mix well and international—no need to learn German, everyone speaks English! Making new friends is a matter of days. Visit tons of networking and startup events, every week.
4. Easy work permissions—Europeans do not need any and can work from day one and the rest applies for the hassle-free Blue Card.
5. Berlin's night life is unmatched, huge and changing every day (plus ridiculously cheap). Berlin has got some of the most dazzling, naughty, and original clubs on the face of the Earth.
Berlin is calling and getting the new tech hub of Europe. If you are passionate about building great software, we’d love to talk with you. If you don't live in Berlin yet, we could help to fix that.
1. Lowest livings costs with highest quality of living. Stay in gorgeous, perfectly renovated apartments in pre-WWII residential buildings with high ceilings, right in the middle of the center and pay a fraction of costs of any other capital (even cheaper than any Eastern European capital). No need for a car—Berlin has one of the densest subway nets and wide streets make biking fun. In addition, Germany has an amazing social health care system including health, unemployment and pension (when working as an employee).
2. A vibrant and fast growing ecosystem of smart people. A vast number of new software talents, founders, software companies and VCs are moving to Berlin, every day (Twitter, Google, Soundcloud, Early Bird and many more).
3. People here are open-minded, outgoing, mix well and international—no need to learn German, everyone speaks English! Making new friends is a matter of days. Visit tons of networking and startup events, every week.
4. Easy work permissions—Europeans do not need any and can work from day one and the rest applies for the hassle-free Blue Card.
5. Berlin's night life is unmatched, huge and changing every day (plus ridiculously cheap). Berlin has got some of the most dazzling, naughty, and original clubs on the face of the Earth.
Berlin is calling and getting the new tech hub of Europe. If you are passionate about building great software, we’d love to talk with you. If you don't live in Berlin yet, we could help to fix that.
> no need to learn German, everyone speaks English!
That's only in the startup scene, really. Most tech companies' primary language is still German, and the English proficiency of people you need to interact with in day-to-day things (post office, grocery shopping, etc.) widely varies. Some people (e.g. at the unemployment agency) even outright refuse speaking English.
But I think it heavily depends on the specific use case what DB to use.