Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Giorgio PostgreSQLDate: 2009-05-30 16:02:47
Subject: Re: Consulta sobre Triggers
Previous:From: Jose VasquezDate: 2009-05-30 15:08:08
Subject: Re: Funciones y esquemas

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group