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 -- Cybertec | https://www.cybertec-postgresql.com