API ? Data format is not the API...
API ? Data format is not the API...
Posted Feb 8, 2008 8:32 UTC (Fri) by khim (subscriber, #9252)In reply to: Shorter release cycle ? Ha! by malefic
Parent article: PostgreSQL 8.4 development plan
Well, dump/restore database upgrade is basically the same kind of a trade-off that the kernel does when breaking the internal APIs and ABIs in every release.
Nope. API/ABI are within the PostgreSQL/kernel. I don't care about that. If you want the analogy with kernel then sysfs will be a better one: the thing is closely related to internal state of kernel, that state is in constant flux yet kernel developers make sure that halfyear old userspace applications "just work". Sure - at some point compatibility is lost (for example kernel 2.6.24 is only compatible with udev 081+), but you can safely go back and forth with last 5-6 kernel versions without any changes in userspace. Not so with PostgreSQL.
You can't possibly maintain the old on-disk format compatibility and innovate with the pace PostgreSQL does.
Take a look on kernel. Take a look on MySQL. They all innovate with pretty damn impressive speed. Yet they don't have this attitude "our application is more important then your data".
For example, the 8.3 release brings major improvements to the on-disk format, the result of which is that databases are 10-20% smaller now.
Oh, for heavens sake. MySQL 5.0 have stored procedures/triggers while 4.x does not have these. Pretty major step if you'll ask me. MySQL 6.0 have Falcon engine - and it's radically different from InnoDB. Also not a trivial change. Yet in both cases you can keep old data for a while! Sure - you'll not be getting new features in this case, but the fact is: you are not forced to update the whole world when you update MySQL. You can install new version of MySQL today, change database format next month and finally use new features after year or two. And if you'll ask any sane SRE you'll know that it's the only way to have upgrade without accidents. Without PostgreSQL the only way to go is to upgrade everything in one huge step.
PostgreSQL is the only DB which tries to claim it's "enterprise class DB" which require dump/restore cycle on each upgrade.
