Hacker News new | ask | show | jobs
by baq 449 days ago
> People will want to use what they learned, and if they can't learn on your software, they won't be inclined to try it later.

This is why Microsoft never seriously pursued piracy of Windows and this is also why Windows was never a market leader on servers. This is why Postgres won databases even though it’s clearly an inferior product to Oracle, MSSQL and DB2. This is why CUDA is the defacto standard in GPGPU. This is why every saas business must have a free tier. Etc.

2 comments

Well, not really. There is a multitude of factors in those, and I'd say some examples are just plain wrong.

Postgres won out because it was better than the others considering the money you pay and the features you (in the end) don't need or couldn't afford with the others. If it just were down to learning, MySQL/MariaDB would have won. Back in the days, everyone knew MySQL, nobody knew Postgres.

With CUDA, it also isn't what people know, it rather is the existing heap of software that only runs properly, quickly, efficiently in CUDA. People buying Nvidia cards and CUDA-based software don't care about CUDA and don't know any CUDA, they are usually higher level, but the availability of software is what drives the popularity there.

You're agreeing with me. MySQL vs postgres doesn't change the overall point at all - both were good enough free as in beer products that a generation of developers grew up on and had no reason to switch to paid offerings later.

With CUDA, you're even highlighting my point:

> the availability of software is what drives the popularity there

Like, there isn't anything more to it. That's all that matters. Again, a free, good enough product that evolved into a best in class software and hardware package together with a generation of GPGPU developers who don't know and don't really care about anything else.

Ah, sorry, yes. I misunderstood and we are in total agreement.

I've over-interpreted the quotation in your post about what people have learned to mean that it is only about the tools you know, nothing else. In hindsight, I should have read your post more carefully.

MySQL is a much better choice for sysadmins than Postgres. Postgres won because it was easier to migrate from Oracle.
Honest question: why is MySQL better for sysadmins?
It’s much easier to deploy and has a much older high availability story that has been battle tested for a decade or two. It also has a more linear regression. The query optimizer doesn’t try to be clever. It only works with the query and the schema. So if your query is bad, it will get worse with data size. Double the data in prod compared to your test instance? Double the bad query. Postgres tries to get clever with data size so it might switch to a different plan with more data resulting in your one customer with a lot of data all of a sudden getting really bad query times but nobody can reproduce it locally. So now you as the admin have to go into the database and pull a dump that for once actually trigger the same query plan as it did in production but your devs might not be allowed to see all the data or have it locally. This is one annoying thing at least you don’t have to do with MySQL.

Oh, also, MySQL just updates in place without bitching. Postgres wants you do install both versions side by side and migrate the data directory. That is annoying with docker.

Also, vacuuming.

Hah, it's a great answer, I did not even think that far, thinking of the ease of installation, updates and command line use, as well as configuration.

But indeed. MySQL's great weakness and great strength is that it's a somewhat limited SQL engine over a variety of storage backends. It can not be too smart, due to the sheer variety of what it supports.

The side effect is that it is quite predictable.

Postgres is worse from admin side, but it feels like the only one that cares about developer sanity and doing things right.