Thread: Online system & transactions

Online system & transactions

From
"Lada 'Ray' Lostak"
Date:
Hello ppl,

    Imagine some online system, based on PgSql. There are 'many' parts which
depends on each other. I will give small example, but instead of simple
table imagine changing tenths various tables (editing). So, 'change table A'
can be work for hours.

    There are tables tableA and tableB. Changes are made by thin client. If
you change tableA, you have to also change tableB to 'finish' operation.
Between starting changing tableA until tableB is finished, data are 'not
valid'. Record may be changes, deleted, inserted, whatever.

    Is there any simple way, how to create 'transactions' over database
connections ? These relations are really complex in real live and doesn't
fit table foundaries, so, it is basically not realistic to make it on
application layer and need to be done somehow on DB layer....

    The best solution should be possibility to 'begin' transaction, 'store'
somehow on server, and next time, instead of begin new transaction return to
stored one. Transactions solves all these problems, but they don't work
across various/multiple connections....

Any ideas/references please ?
Thank you,

Best regards,
Lada 'Ray' Lostak
Unreal64 Develop group
http://www.orcave.com
http://www.unreal64.net


--------------------------------------------------------------------------
In the 1960s you needed the power of two C64s to get a rocket
to the moon. Now you need a machine which is a vast number
of times more powerful just to run the most popular GUI.



Re: Online system & transactions

From
Chris Browne
Date:
ray@unreal64.net ("Lada 'Ray' Lostak") writes:
>     Imagine some online system, based on PgSql. There are 'many' parts which
> depends on each other. I will give small example, but instead of simple
> table imagine changing tenths various tables (editing). So, 'change table A'
> can be work for hours.
>
>     There are tables tableA and tableB. Changes are made by thin client. If
> you change tableA, you have to also change tableB to 'finish' operation.
> Between starting changing tableA until tableB is finished, data are 'not
> valid'. Record may be changes, deleted, inserted, whatever.
>
>     Is there any simple way, how to create 'transactions' over database
> connections ? These relations are really complex in real live and doesn't
> fit table foundaries, so, it is basically not realistic to make it on
> application layer and need to be done somehow on DB layer....
>
>     The best solution should be possibility to 'begin' transaction, 'store'
> somehow on server, and next time, instead of begin new transaction return to
> stored one. Transactions solves all these problems, but they don't work
> across various/multiple connections....
>
> Any ideas/references please ?

You probably should look at the documentation for this.

<http://www.postgresql.org/docs/current/interactive/sql-begin.html>

PostgreSQL supports _exactly_ this notion, in exactly the way you
describe.

If you need to have multiple transactions active at once, you will
just need to establish multiple connections.
--
let name="cbbrowne" and tld="cbbrowne.com" in String.concat "@" [name;tld];;
http://www.ntlug.org/~cbbrowne/linuxxian.html
A VAX is virtually a computer, but not quite.

Re: Online system & transactions

From
"Lada 'Ray' Lostak"
Date:
Hello,


> You probably should look at the documentation for this.
>
> <http://www.postgresql.org/docs/current/interactive/sql-begin.html>
>
> PostgreSQL supports _exactly_ this notion, in exactly the way you
> describe.
But this is normal 'transaction' - and I didn't find way, how can I 'store'
transaction to disc storage and 'reopen' later. So, begin/commin works
within ONE connection and doesn't help in my general problem. Or is there
some way to do that with normal transactions ?

My problem is that related data changes are done in 'longer' time - e.g.
hour or so (it take hour to change all datas together)  and within various
database connections.

Thx
Best regards,
Lada 'Ray' Lostak
Unreal64 Develop group
http://www.orcave.com
http://www.unreal64.net


--------------------------------------------------------------------------
In the 1960s you needed the power of two C64s to get a rocket
to the moon. Now you need a machine which is a vast number
of times more powerful just to run the most popular GUI.


----- Original Message -----
From: "Chris Browne" <cbbrowne@acm.org>
To: <pgsql-general@postgresql.org>
Sent: Monday, October 18, 2004 7:22 PM
Subject: Re: [GENERAL] Online system & transactions


> ray@unreal64.net ("Lada 'Ray' Lostak") writes:
> >     Imagine some online system, based on PgSql. There are 'many' parts
which
> > depends on each other. I will give small example, but instead of simple
> > table imagine changing tenths various tables (editing). So, 'change
table A'
> > can be work for hours.
> >
> >     There are tables tableA and tableB. Changes are made by thin client.
If
> > you change tableA, you have to also change tableB to 'finish' operation.
> > Between starting changing tableA until tableB is finished, data are 'not
> > valid'. Record may be changes, deleted, inserted, whatever.
> >
> >     Is there any simple way, how to create 'transactions' over database
> > connections ? These relations are really complex in real live and
doesn't
> > fit table foundaries, so, it is basically not realistic to make it on
> > application layer and need to be done somehow on DB layer....
> >
> >     The best solution should be possibility to 'begin' transaction,
'store'
> > somehow on server, and next time, instead of begin new transaction
return to
> > stored one. Transactions solves all these problems, but they don't work
> > across various/multiple connections....
> >
> > Any ideas/references please ?
>
> You probably should look at the documentation for this.
>
> <http://www.postgresql.org/docs/current/interactive/sql-begin.html>
>
> PostgreSQL supports _exactly_ this notion, in exactly the way you
> describe.
>
> If you need to have multiple transactions active at once, you will
> just need to establish multiple connections.
> --
> let name="cbbrowne" and tld="cbbrowne.com" in String.concat "@"
[name;tld];;
> http://www.ntlug.org/~cbbrowne/linuxxian.html
> A VAX is virtually a computer, but not quite.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faqs/FAQ.html
>


Re: Online system & transactions

From
Andrew Sullivan
Date:
On Tue, Oct 19, 2004 at 01:29:41PM +0200, Lada 'Ray' Lostak wrote:
> But this is normal 'transaction' - and I didn't find way, how can I 'store'
> transaction to disc storage and 'reopen' later.

That you can't do.  The usual recipe for this is something like
optimistic locking -- for instance, set an int8 column to
nextval() of some sequence, and then later, when you're ready to
commit, check to make sure the value hasn't changed and do all your
work in an SQL transaction.  If the value has changed anywhere, you
know you have to throw away the work you did (or present the
intermediate changes to the user, or whatever).

A

--
Andrew Sullivan  | ajs@crankycanuck.ca
In the future this spectacle of the middle classes shocking the avant-
garde will probably become the textbook definition of Postmodernism.
                --Brad Holland