Re: Funciones y esquemas

From: Carlos Bazán <infobaz(at)vtr(dot)net>
To: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funciones y esquemas
Date: 2009-05-30 15:39:42
Message-ID: 200905301139.43250.infobaz@vtr.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El Friday 29 May 2009 22:25:58 escribió:
> 2009/5/29 Carlos Bazán <infobaz(at)vtr(dot)net>:
> > Amigos, tengo la siguiente duda:
> > Es mejor tener una función dentro de un esquema que procese datos de las
> > tablas de ese esquema o tener una sola función en el esquema public que
> > procese data de todos los esquemas?
>
> depende del problema que quieras solucionar: una desventaja obvia es
> que si en algun momento quisieras hacer un procesamiento especial para
> un cliente particular (o para varios) empezarias a dañar tu funcion,
> una ventaja obvia es que si nunca ocurre que necesites procesamiento
> especial sino que debes hacer un cambio que afecte a todos los
> clientes solo deberas modificar una funcion y no muchas
>

No habrá procesamiento especial para ningún cliente. Las funciones hacen lo
mismo para todos por igual.

> > Estoy trabajando en una base que almacenará datos de muchos clientes,
> > entonces por una cuestión organizacional voy a crear para cada cliente un
> > esquema con las mismas tablas (y estructura) usando números, por
> > ejemplo "1".tabla1, "1".tabla2, "2".tabla1, "2".tabla2 etc.
>
> seguro que no puedes tener solo un conjunto de tablas para todos los
> clientes?
>

De poderse se podría, pero se pensó inicialmente separar para efectos de
claridad (una carpeta para cada cliente y no todos los clientes en la misma
carpeta) y también por seguridad ya que cada cliente tiene los privilegios
para su esquema y no otros.
Se presupuesta además que una vez terminado el desarrollo del esquema matriz
(que es el esquema del que se copiará todo al nuevo esquema creado para cada
cliente) no se deberían hacer modificaciones estructurales, solo mantención
en cuanto a reindexación y vacuums.

> > Entonces como habrán algunas funciones que procesarán datos de tablas de
> > cada cliente en particular,  me pregunto si es mejor hacer esas funciones
> > dentro del esquema de cada cliente en particular o hacer una sola que
> > trabaje con las tablas de un cliente en un momento dado, para lo cual se
> > le pasaría el esquema a trabajar como parámetro.
>
> existen formas menos complejas de "dispararse en el pie"

Pensé inicialmente en que quizás habría algo de performance involucrado en el
tema de utilizar una función para las tablas de cada esquema que una función
para todos los esquemas. Parece que da lo mismo, por lo que usaré una función
para todos los esquemas.

Gracias

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Giorgio PostgreSQL 2009-05-30 16:02:47 Re: Consulta sobre Triggers
Previous Message Jose Vasquez 2009-05-30 15:08:08 Re: Funciones y esquemas