MySQL vs Postgres (vs MongoDB)

Chris Travers has a fairly nifty article up titled O/R Modelling interlude: PostgeSQL vs MySQL, where-in he makes the claim
MySQL is what you get when application developers build an RDBMS.
PostgreSQL is what you get when database developers build an application development platform.
This isn't really flame-bait - its intended as a statement to show how people approach arguments (flame wars?) about MySQL vs PostgreSQL.  To paraphrase Chris,
MySQL has been massively disruptive because it tends to really, really look at the world from a Use Case perspective, answering the questions "What problem are you trying to solve", while
Postgres has been massively disruptive because it tends to look at the world from a theory perspective, answering the question "How should the database work in the solution"

I'd add MongoDB to this mix though, and extend the above quote to say
MySQL is what you get when application developers build an RDBMS.
PostgreSQL is what you get when database developers build an application development platform.
MongoDB is what you get when GUI developers build an RDBMS.
MongoDB has a great GUI, the documentation is spectacularly good, the API is pretty neat (OK, from a RoR perspective), and 10gen has great marketing, but the Design Decisions underlying the database?  Boy Howdy, are those entertaining - and not in a good way.
Global write locks, three config servers, destructive updates, and so on, and so forth - definitely fodder for late night entertainment, and once again, not in a good way.
Or, to put it differently, its like the "Booth Babes" at trade shows - they look good, suck you (ok, the guys) in, but are basically eye-candy for item actually being displayed
 
Boys and Girls, Database Theory is hard 
Seriously hard.
Don't let anyone tell you differently.
And no, I'm not talking about using databases, I'm talking about the fun stuff associated with building databases from the ground up.
If you doubt any of this, just take a class - one of the first (literally, one of the first) things you learn is how to lock your little Database to do CRUD stuff.  And then you realize that its easy to lock the table, but locking just the row (or god forbid, the cell) - oh my, quantum jump in difficulty.
The point behind this being, this is stuff you only find out if you know the problem exists in the first place.

So yeah, MongoDB is what you get when GUI developers build an RDBMS...

Comments

Great blog! (I've been working with various aspects the "fun stuff" for 12 years now....)
Anonymous said…
Assuming RDBMS=CA in CAP theorem, who says mongodb is an RDBMS ?
Anonymous said…
I am currently switching all my custom php database web applications from mysql to postgres. Stability, Data Integrity, and security are important and Postgres offers it all. I am also a big fan of open source and not sure if I like the direction Oracle is taking mysql. I don't know much about MongoDB and will have to look into it some more.
James Zicrov said…
I think PostgreSQL has a lot of complexities involved therein and hence on the other side it is also able to deal with some extreme database operations.

SSIS PostgreSql Read
Anonymous said…
Great Post, I really enjoyed exploring your post. Thanks for sharing the information. Keep it up!!
arkasoftwares
Alex Carey said…
Thanks for posting such articles. It looks really helpful for the one who searching for such things such as Progressive Webs Apps Development.

Popular posts from this blog

Erlang, Binaries, and Garbage Collection (Sigh)

Visualizing Prime Numbers

Its time to call Bullshit on "Technical Debt"