Обсуждение: GD global data array capabilities in pltcl

Поиск
Список
Период
Сортировка

GD global data array capabilities in pltcl

От
Constantin Teodorescu
Дата:
What would be the limitations of using the GD (global data) array in 
pltcl stored procedures ?

I mean, if I'll keep there a big cache for a warehouse using

set GD($itemId,quantity) $computedQuantity
...
then elsewhere

return $GS($itemId,quantity)

would be a problem for let's say , 15000 articles?

How would work the GD array in a heavy multi-user application?
I presume that it is shared among any backend processes, isn't it?

Are there some locking mechanisms?

In other words, is the GD array appropriate to implement some caching 
features for a heavy used application in PostgreSQL?

If not, are there any other sollutions (before going to EJB's and stuff) ?

Thanks in advance,
Constantin Teodorescu
Braila, ROMANIA




Re: GD global data array capabilities in pltcl

От
"Nigel J. Andrews"
Дата:

On Mon, 14 Oct 2002, Constantin Teodorescu wrote:

> What would be the limitations of using the GD (global data) array in 
> pltcl stored procedures ?
> 
> I mean, if I'll keep there a big cache for a warehouse using
> 
> set GD($itemId,quantity) $computedQuantity
> ...
> then elsewhere
> 
> return $GS($itemId,quantity)
> 
> would be a problem for let's say , 15000 articles?
> 
> How would work the GD array in a heavy multi-user application?
> I presume that it is shared among any backend processes, isn't it?
> 
Comment in the code says:
    /************************************************************     * prefix procedure body with     * upvar #0
<internal_procname>GD
 

so I would say it's not accessable from other functions within the same
backend. I doubt very much that this data is database wide I can only see it
being backend specific.


> Are there some locking mechanisms?
> 
> In other words, is the GD array appropriate to implement some caching 
> features for a heavy used application in PostgreSQL?
> 
> If not, are there any other sollutions (before going to EJB's and stuff) ?
> 
> Thanks in advance,
> Constantin Teodorescu
> Braila, ROMANIA
> 

-- 
Nigel J. Andrews



Re: GD global data array capabilities in pltcl

От
Tom Lane
Дата:
"Nigel J. Andrews" <nandrews@investsystems.co.uk> writes:
> so I would say it's not accessable from other functions within the same
> backend. I doubt very much that this data is database wide I can only see it
> being backend specific.

It's definitely backend-local.  I imagine you could access another
procedure's GD if you could determine its name (it's built from the
pg_proc OID, I think).  However, if you want to share global data across
pltcl functions in the same backend session, you shouldn't bother with
GD at all: just create named global Tcl variables.  All pltcl functions
in a backend run in the same interpreter, so they can trivially access
global variables.
        regards, tom lane


Re: GD global data array capabilities in pltcl

От
Constantin Teodorescu
Дата:
Tom Lane wrote:

>"Nigel J. Andrews" <nandrews@investsystems.co.uk> writes:
>  
>
>>so I would say it's not accessable from other functions within the same
>>backend. I doubt very much that this data is database wide I can only see it
>>being backend specific.
>>    
>>
>
>It's definitely backend-local.  I imagine you could access another
>procedure's GD if you could determine its name (it's built from the
>pg_proc OID, I think).  However, if you want to share global data across
>pltcl functions in the same backend session, you shouldn't bother with
>GD at all: just create named global Tcl variables.  All pltcl functions
>in a backend run in the same interpreter, so they can trivially access
>global variables.
>
>  
>

OK. Got that! Thanks a lot!

teo