Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

¿Reservar espacio de disco para cada cliente?

Estas en el tema de ¿Reservar espacio de disco para cada cliente? en el foro de PostgreSQL en Foros del Web. Hola a todos, vereis tengo un problema y no sé muy bien cómo resolverlo. ¿Existe alguna forma de saber el espacio ocupado por una serie ...
  #1 (permalink)  
Antiguo 15/07/2009, 01:57
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
¿Reservar espacio de disco para cada cliente?

Hola a todos, vereis tengo un problema y no sé muy bien cómo resolverlo.

¿Existe alguna forma de saber el espacio ocupado por una serie de datos?

Por ejemplo, una tabla "cliente" y otra "elementos" y quiero saber el espacio (fisico, en mbs, kbs, etc) que ocupa los elementos de un cliente determinado. ¿Hay alguna forma de saberlo?

Es que estamos pensando en limitar la cuota de disco por cada cliente en nuestra aplicación web, en cuanto a datos almacenados en la base de datos (y claro está sus propios datos), y no sabemos muy bien cómo obtener esta información de la base de datos.

¿Alguna idea?

Gracias por adelantado, saludos!!

EDITO: He encontrado esto: h**p://wiki.postgresql.org/wiki/Disk_Usage

Pero solo es para determinar el tamaño de una relación, esquema, etc no?, no para un conjunto de datos dentro de una tabla (o consulta)
  #2 (permalink)  
Antiguo 15/07/2009, 09:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Reservar espacio de disco para cada cliente?

Mira esto.

La función pg_relation_size te devuelve el valor en bytes de una tabla.
Mira las otras funciones y mira como lo puedes aplicar para tu problema.

Estas son funciones muy utilizadas para realizar dimensionamiento de almacenamiento en servidores postgresql.
Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 18/07/2009, 15:45
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: ¿Reservar espacio de disco para cada cliente?

Muchas gracias por tu respuesta, al tiempo de postear esta duda, vi esas funcinoes en el catálogo de funciones de PgAdmin.

Hemos optado por una solución, que personalmetne no me convence mucho, más que nada por rendimiento. Hemos realizado un procedimiento almacenado en el que va creando tablas temporales (la misma pero se va reemplazando) con consultas que devuelvan datos relacionados con el cliente (todos los elementos suyos, todas sus facturas, todos sus documentos, etc) y vamos obteniendo con la función que comentas, el peso de esa tabla temporal, dicho valor lo vamos almacenando en un acumulador. Una vez terminado, devuelve el peso total.

¿El problema? Como he dicho, veo un problema de rendimiento, ya que, cada operación que haga un cliente (cada vez que inserte un elemento, un documento, etc) tenemos que llamar a esta función para comprobar si supera su couta (la couta es un valor ya almacenado, un campo de la tabla cliente), es más, tendríamos que comprobar que tiene couta para realizar una acción, y luego, tendríamos que comprobar que dicha accion realizada no ha superado la couta asignada, a eso múltiplicalo por el número de clientes... bff no sé, de momento es lo que tenemos, pero estoy pensando en otras soluciones mas eficientes.

saludos! y lo dicho, muchas gracias ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:56.