On Sun, 2020-06-14 at 09:17 -0400, Bruce Momjian wrote:
On Sat, Jun 13, 2020 at 09:27:25PM -0400, Bruce Momjian wrote:
On Sat, Jun 13, 2020 at 05:06:37PM -0500, Ron wrote:
On 6/13/20 1:46 PM, Bruce Momjian wrote:
On Wed, Jun 3, 2020 at 08:53:45PM +0200, Andreas Joseph Krogh wrote:
I agree these are all technical issues, but nevertheless - "implementation
details", which DBAs don't care about. What's important from a DBA's
perspective is not whether WAL is cluster-wide or database-wide, but whether
it's possible to manage backups/PITR/restores of individual databases in a more
convenient matter, which other RDBMS-vendors seem to provide.
I love PG, have been using it professionally since 6.5, and our company depends
on it, but there are things other RDBMS-vendors do better...
The bigger issue is that while we _could_ do this, it would add more
problems and complexity, and ultimately, I think would make the
software less usable overall and would be a net-negative. We know of no
way to do it without a ton of negatives.
How do other RDBMSs do it with ease? (I know it's an architectural issue,
but what's the architectural issue?)
I don't know.
I don't know the details, but I do know the general issues. Other
vendors must have sacrificed architectural simplicity, features,
reliability, or performance to allow these things. For example, it
wouldn't be hard to just make databases another level of container above
schemas to allow for simple cross-database queries, but we would lose
the security isolation of databases (connection control. private system
tables and extensions) to do that. Having per-database WAL causes loss
of performance, reliability issues, and architectural complexity. Those
problems might be solvable, but you will need to take a hit in one of
these areas.
One example for what may be difficult:
If you GRANT a permission on a table to a user, you may get an entry in
"pg_catalog.pg_shdepend", which is a global table (it is shared by all
databases).
Now if you want to recover a single database, and you get a WAL entry
for that table, you'd have to "logically decode" that entry to figure
out if it should be applied or not (because it references a certain
database or not).
Yours,
Laurenz Albe