| From: | Steve Midgley <science(at)misuse(dot)org> |
|---|---|
| To: | Kirmo Uusitalo <kirmo(dot)uusitalo(at)gmail(dot)com> |
| Cc: | Samed YILDIRIM <samed(at)reddoc(dot)net>, pgsql-sql(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Postgresql long transaction support |
| Date: | 2022-12-14 19:59:44 |
| Message-ID: | CAJexoSJ2M=S5p21jzzxyy97yhNFLOmqjZaR3G+6Dp5iZpA9ang@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
On Wed, Dec 14, 2022 at 4:46 AM Kirmo Uusitalo <kirmo(dot)uusitalo(at)gmail(dot)com>
wrote:
> Hi Samed,
>
> thanks. The bitemporal tables are somewhat similar except that there is
> not a date range to distinguish between versions of objects. One could use
> this long transaction feature for comparing the results of different plans
> of implementing something - and these could be affecting many objects from
> the parent version (or it's parent and so forth).
>
> Similarly as with bitemporal tables the FK constraints are problematic. If
> an object is to be deleted in parent version, any created child object of
> this in child version cannot be posted to parent version later. That's why
> I believe it is best first merge the changes done in parent version to
> current version before you are allowed to post.
>
> To solve this in application layer for an existing application is quite
> complex and this is why I am looking for a more generic solution within the
> database.
>
>>
>>>
This seems pretty complex to address at any layer! But it would be a useful
feature for some situations, for sure. It seems like the approach taken by
Ruby/Rails and similar frameworks for "db migrations" might have some
useful design patterns for you. Each transaction has a link to its future
and past transaction. If the system wants to traverse from "migration 6 to
migration 3" and the DB is currently at migration 6 (stored a version
number in the db itself), it runs the exit function to downgrade to
migration 5, then runs the logic for migration 5, then runs the downgrade
to 4, etc.
It can be slow, as implemented, but it allows you to attach logic to every
step forward and backward in time that ensures you can handle even
structure changes in the tables, etc (as well as changing lookup values in
tables, etc).
Might be worth considering as a design model?
Steve
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2022-12-14 21:13:32 | Re: Postgresql long transaction support |
| Previous Message | Kirmo Uusitalo | 2022-12-14 12:45:47 | Re: Postgresql long transaction support |