The big reason that DDL is slow is because these systems haven't tried to make it fast.
This is, of course, a contary opinion so hear me out before judging me ;)
My thinking is thus:
There are lots of virtual storage engines in the mysql world such as 'federated' and 'spider' and 'union' and such. These actually abstract away more than one data-source, and often the engine is smart enough to support when the data sources don't have identical schema.
These virtual storage engines demonstrate that a layer of abstraction can cope with casting queries across more than one non-identical tables.
So, either built in or as a storage engine abstraction, databases _could_ support DDL changes by putting rows with each version of the schema into actually different tables, and casting queries across them etc transparently.
Another approach is that taken by the postgres engine, where each row has a version and some DDL such as add column with default null can be done instantly. (With a bit more thought, even defaults could have been coped with instantly; its a shame they weren't.)
So, blame the DB designers!
Within Amazon's Aurora and RDS product families (https://aws.amazon.com/rds/), there are
* Amazon Aurora MySQL
* Amazon Aurora PostgeSQL
* Amazon Aurora Serverless
* Amazon RDS for MySQL
* Amazon RDS for MariaDB
* Amazon RDS for Oracle
* Amazon RDS for SQL Server
plus the variations in different versions (e.g. Amazon RDS for MySQL supports 5.5, 5.6, 5.7, and 8.0).
Without knowing that it's hard to understand how you solved your problem. E.G. If you switced from Aurora MySQL to RDS for MySQL i expect you'd still need to use a tool like pt-osc and copy your tables.
Thanks!
What do you mean by this?
These solutions offered a way to alter the table without using all the disk space available on the instance. Thus bypassing the storage issue.