Re: Usar varias BDs o una sola?

From: Rafael Martinez <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
To: vzunigam(at)gmail(dot)com
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Usar varias BDs o una sola?
Date: 2009-10-15 07:59:56
Message-ID: 4AD6D67C.4060709@usit.uio.no
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Alvaro Herrera wrote:

>> 2009/10/14 <vzunigam(at)gmail(dot)com>:
>>> Algunas respuestas:
>>> 1)El diseño es bastante complejo, aproximadamente unas 40-50 tablas
>>> 2)1Gb por año x empresa
>>> 3)Servidor principal y uno de espejo.
>>> 4)Unos 20 usuarios concurrentes x empresa
>

Hola

Esta claro que si tienes todo en una sola base de datos, con mil
empresas y estos datos, vas a tener problemas de rendimiento y el
sistema no va a poder crecer en el futuro.

Tambien vas a tener problemas con los backups y el mantenimiento de la
base de datos. Y en caso de fallo grave del sistema, son mil empresas
las que pierden al acceso al sistema a la vez.

1000 empresas x 1GB al año son casi 1TB de datos por año. Con 20.000
usuarios concurrentes, vas a tener problemas incluso usando un sistema
de pooling de conexiones. Con tener un solo usuario por empresa
accediendo al sistema estamos hablando de ejecutar 1000 queries en paralelo.

Dudo mucho que exista un servidor actualmente que pueda hacer frente a
esta carga de trabajo, con la cantidad de datos que se van a manejar.

Sin saber nada mas de como el sistema funciona y como es el diseño de la
base datos, yo afirmo que tener todo en una sola base de datos y en un
solo servidor es un diseño condenado al fracaso.

Yo tendria una base de datos por empresa. Y las agruparia en diferentes
servidores independientes. El numero de servidores en un principio no
tiene porque ser muy alto. Puedes instalar mas servidores a medida que
el sistema siga creciendo y tengas que agrupar las bases de datos en
grupos mas pequeños.

Para empezar se podria empezar, por ejemplo, con 4-5 servidores con
250-200 bases de datos cada uno. si en un futuro empiezas a tener
problemas de rendimiento puedes instalar mas servidores y mover bases de
datos a los mismos, con lo que tendras menos bases de datos por servidor
a medida que pase el tiempo y el sistema siga creciendo.

Para saber el numero de servidores que necesitarias en principio, habria
que realizar un test del sistema, para averiguar cuanta carga soporta un
solo servidor (A bote pronto, con no menos de 32-64GB de memoria,
multiprocesador y un *buen sistema de discos* en raid 10).

Si quieres tener un sistema en el que un fallo grave no provoque una
caida del mismo por mucho tiempo, tendras que replicar los datos de cada
servidor a su servidor replica, con lo que el numero de servidores se
duplica. Tambien tendras que usar un sistema de pooling de conexiones
para hacer frente al numero de conexiones que dices.

Por supuesto el administrar 1000 bases de datos en varios servidores,
tiene un costo de administracion. Por no hablar que los backups y
trabajos de mantenimiento requieren su administracion tambien. Pero a su
vez te deja la puerta abierta para poder hacer frente a problemas de
rendimiento y crecimiento en un futuro.

Como ves, no es nada facil, y requiere una inversion en hardware y
administracion si quieres tener un sistema con un buen rendimiento,
tolerante a fallos y que pueda hacer frente al crecimiento del mismo en
el futuro.

Ya contaras.
- --
Rafael Martinez, <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
Center for Information Technology Services
University of Oslo, Norway

PGP Public Key: http://folk.uio.no/rafael/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.7 (GNU/Linux)

iD8DBQFK1tZfBhuKQurGihQRAoSsAJ9FHIbQetEYdNL/Tm/3YSS6h2uMSgCdEnIH
wdH/HU1JU29mZlFBkJB+M0E=
=zfXx
-----END PGP SIGNATURE-----

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rafael Martinez 2009-10-15 08:29:29 Re: Particionamiento de Tablas
Previous Message Fabio Arias 2009-10-15 07:29:10 Re: Particionamiento de Tablas