That's why database abstraction is so nice. If I ever get sick of MySQL - or say, decided I didn't want to use Postgres - it's not hard to switch!
Database abstraction isn't, or at least isn't practical.
Small projects don't need an interchangeable database. Bigger projects won't let you get away without making assumptions about the database. Nothing but the basics work the same between SQLite and ORACLE.
there's one useful thing about postgresql: specifically, interviewees that inform you you should be using postgresql can be immediately rejected. "do you use mysql or postgresql?" "oh, mys-" "YOU SHOULD SWITCH TO POSTGRESQL!!"
I think this can be extended to any interviewee who starts redesigning your stack before they're even hired can be rejected.
This is a common mistake people make, I think. Just because an ecosystem is smaller does not mean it is inferior (or less practical). In fact, the opposite is routinely true. Is it harder to find tutorials for PostgreSQL? Yeah, maybe. Is it harder to get high-quality advice and resources from subject matter experts? No; in fact, it's far easier. I have used PostgreSQL for many years and in all of them every question…
Agreed. It's like saying they should have written Quora using C# because there are more developers for it instead of a "fringe" language like Python.
It's interesting to see how PostgresSQL didn't get nowhere near the popularity of MySQL. I think a few major things contributed to this: 1) MySQL focused on performance first while PostgresSQL positioned themselves as "feature-complete." Of course, that was years ago and in the meantime they became comparable in both aspects. MySQL+InnoDB is ACID compliant and Postgres matches the InnoDB performance. Sure, Postgres m…
A few bugs/limitations of Mysql not shared by Postgres. All AFAIK. * Integer columns with null constraints will silently translate nulls to 0s, rather than throwing an error (as constraints in all other contexts do). Imagine a database which, on violation of a foreign key constraint, just silently picked the first row in the target table - it's just insane. * Transactions can't roll back schema changes, so if you hav…
> Transactions can't roll back schema changes
That's a feature of postgres rather than a limitation of mysql however. As far as I know the SQL Standard doesn't ask for transactional DDL, Oracle has pretty much no support for transactional DDL (in 10g anyway, each DDL statement is executed in its own transaction and any pending transaction is COMMITted before a DDL), I have no idea about SQL Server.
It's interesting to see how PostgresSQL didn't get nowhere near the popularity of MySQL. I think a few major things contributed to this: 1) MySQL focused on performance first while PostgresSQL positioned themselves as "feature-complete." Of course, that was years ago and in the meantime they became comparable in both aspects. MySQL+InnoDB is ACID compliant and Postgres matches the InnoDB performance. Sure, Postgres m…
I think having a "launch" at the right time might have had some impact also. MySQL launched in 1995, right around the time that the idea of generating hypertext dynamically was taking off, so a bunch of web stuff was looking for a lightweight, fast DB without necessarily a lot of features. Postgres had been around since the 1980s as a research project, and in 1994 was publicly released as an open-source project and added SQL support (rather than its own query language), but it was sort of off the internet's radar as a research project mostly known in academia. The official launch of the rebranded PostgreSQL was in 1997, but that might've been a bit late already, since 1995-1997 were a fairly crucial two years for the LAMP stack's birth.
There are a number of companies that provide support for PostgreSQL. Enterprise DB is probably the most prominent of them. Kind of funny that they didn't have a good technical reason not to use PostgreSQL, just that the community was smaller.
Postgres 9, with streaming replication and easy to setup bullet proof read only slave replication will probably move momentum in the direction of PostgreSQL. The replication was always easier to setup on MySQL, which gave it an advantage.
there's one useful thing about postgresql: specifically, interviewees that inform you you should be using postgresql can be immediately rejected. "do you use mysql or postgresql?" "oh, mys-" "YOU SHOULD SWITCH TO POSTGRESQL!!"
I think this can be extended to any interviewee who starts redesigning your stack before they're even hired can be rejected.
Hmm. Probably, but there are people out there who are qualified to know how to scale better than you, presumably.
On the other hand, people who are religious about technology choices (faith rather than logic) tend to be bad matches. People who don't revisit their decisions don't make great engineers. I don't want choices made because of a previous lifestyle decision.
This is a common mistake people make, I think. Just because an ecosystem is smaller does not mean it is inferior (or less practical). In fact, the opposite is routinely true. Is it harder to find tutorials for PostgreSQL? Yeah, maybe. Is it harder to get high-quality advice and resources from subject matter experts? No; in fact, it's far easier. I have used PostgreSQL for many years and in all of them every question…
Maybe the postgres supporters can fill this in about Postgres reliability: http://www.quora.com/How-reliable-is-Postgres-replication that's one of the biggest issues scaring people away from Postgres.
The replication is reliable, it's just that with the 8.0 releases, it's an add-on and not obvious to setup (e.g with Slony have to do special procedures to properly replicate DDL changes, it required having triggers on replicated tables, etc). In 9.0 replication is built in, transparent, and trivial to setup.
That's why database abstraction is so nice. If I ever get sick of MySQL - or say, decided I didn't want to use Postgres - it's not hard to switch!
Depends on your abstraction system. If we're talking about SQL, the incompatibilities abound. And ORM's or other libraries tend to be either very, very complex or tend to implement everything in the most simple way. Both not very good for performance. Never mind that most frameworks don't have the same level of support for every DB (open source libraries tend to have very limited Oracle/SQL Server support)
And this is only talking about queries, once we get to triggers, constraints or even stored procedures…