I have to work with oracle for a client right now and I’m gobsmacked that they don’t offer it at the pricepoint.
You'd just run your migration statements one after the other and pray it doesn't fail midway? Or have a contingency plan for every possible point of failure?
Postgres has given me a sheltered life.
Every busy production db I've ever seen has had big problems when dealing with 10-hour transactions, and I don't see how Postgres could deal with these kind of problems as they're fundamental in the data model.
It's not a redo/undo log. It's more like (simplifying things here) having multiple copies of things and different sessions/connections "see" different sets of data. That's why you need to vacuum the database periodically, to garbage collect old rows that are no long accessible to any sessions/transactions.
See https://devcenter.heroku.com/articles/postgresql-concurrency
>is there enough storage space for that?
You do need to make sure you aren't too close to filling your storage, postgres needs some breathing room for this reason.
> Adding a column with a volatile DEFAULT or changing the type of an existing column will require the entire table and its indexes to be rewritten. As an exception, when changing the type of an existing column, if the USING clause does not change the column contents and the old type is either binary coercible to the new type or an unconstrained domain over the new type, a table rewrite is not needed; but any indexes on the affected columns must still be rebuilt. Table and/or index rebuilds may take a significant amount of time for a large table; and will temporarily require as much as double the disk space.
Clearly there are workarounds where you make a new empty column that you then slowly backfill with the correct value and eventually transactionally rename the new column to the old one, but the magic "oh postgres does DDL in a transaction so it's magic and we never have to worry" is pretty much gone at that point.
In general, Postgres also seems to have better plugins and extensions
And yet lacks the most important one. A natively supported clustering and HA solution.
Especially important with CitusData being acquired by Microsoft and its future now at risk.
An actively developed FOSS solution backed by EnterpriseDB also one of the main company supporting PostgreSQL.
But err... And ahem ahem... there are more https://www.postgresql.org/download/products/3-clusteringrep...
It's a choice of the PostgreSQL development team to only include low level api for HA in core project. But it's fairly harsh to say there is no active support for HA. Many maintainers of the core are also invested in HA related project build around PostgreSQL.
Dealing with third party solutions means having to worry about incompatibility, enterprise support, ongoing maintenance etc.
There are a lot of companies out there which provide enterprise support for PostgreSQL + HA.
b) Is not part of the core PostgreSQL codebase and so you are forever having to worry about compatibility.
c) PostgreSQL still lacks multi-master HA which is needed when you want to HA but continue to scale out.
https://wiki.postgresql.org/wiki/Foreign_data_wrappers IMAP, GitHub, BigQuery, Faker and CSV have been awesome for me, but don’t tend to be 100% supported by public cloud managed DB services. I’ve heard some can be flaky.
INSERT INTO public.people SELECT ssn, name, phone_number FROM faker.people;
That is a way to generate a ton of fake records for integration and load testing. Very elegant!
If you value more expressive data types and constructs to read/write your data then PostgreSQL is better. If you don't need those but do need to be able to scale to very large data volumes then MySQL is better.
I don't understand why people keep wanting to make this a competition. It's been going for decades and it was stupid back then as it is today. The databases are both popular, both high quality but serve different needs.
Why is it better than MySQL? This article wasted my time. Is there a better article which explains why Postgres is better than other free and opensource SQL implementations?