Pages

viernes, 1 de mayo de 2015

Estimación del crecimiento de las tablas de una base de datos

Buenas, reciban ante todo un cordial saludo, en esta nueva oportunidad daré a conocer cómo hacer un análisis de estimación sobre el crecimiento de las tablas de una base de datos (BD), ¿con qué fin hacer estos cálculos? Esto debe realizarse cuando deseamos conocer cuánto espacio en disco necesitaremos al momento de crear nuestra BD e implementarla en un manejador y/o motor de base de datos posiblemente para ser usada en el campo laboral propiamente, ya sea porque se dispone de pocos recursos de hardware  y se desea hacer una asignación optima de recursos (mantenimiento y gestión de una BD, realizado por un DBA), o simplemente para tener una idea de cuánto pueden crecer cada una de las tablas.

Para este artículo se empleará el modelo de BD realizado en un post anterior llamado: “SQL Developer Data Modeler y un ejemplo de uso” el cual muestra como descargar, instalar y utilizar una herramienta grafica para representar un modelo relacional en caso de que no se posea ya una herramienta o un modelo relacional digitalizado. Más detalles pueden contemplarse en el siguiente link:


Antes de comenzar deben tenerse presente ciertos aspectos:

a) El tipo de dato de las columnas: Esto es de vital importancia como se había mencionado en el link del artículo anterior, ya que cada tipo de dato tiene un tamaño diferente.

b) Estimación aproximada de registros ingresados: Al definirse el tipo de dato, debe tenerse presente una estimación básica (si el modelo será implementado) de cuantos registros serán ingresados en un periodo de tiempo;  este puede ser de una semana, un mes, o un año dependiendo de la frecuencia con la que se realizara el mantenimiento a la base de datos, para este ejemplo se asume que el mantenimiento se efectuara 1 vez al año en circunstancias normales.

c) La cantidad de columnas que posea la tabla: Todas las columnas deben ser tomadas en cuenta al momento de hacer el análisis de crecimiento.

Dicho esto podemos proseguir con el análisis de las tablas.

1) para la tabla Almacen:


Almacen

Columna
Tipo
Tamaño en bytes
Id_almacen
NUMBER
3
Ubicacion
VARCHAR2
50
Metros_cuadrados
FLOAT
6
Tamaño total en bytes: 59

Como puede apreciarse en la tabla anterior, se identifica cada columna (las palabras que deberían tener acentos no los poseen ya que en el modelo y/o script de la BD no se asignan nombres con acentos), su tipo de dato, y el tamaño de dicha columna, luego se realiza una suma del tamaño de todas las columnas y se obtiene su total en bytes.

Estimando que por mucho al año se lleguen a ingresar o adquirir un máximo de 15 almacenes al año.
15 * 59 = 885 bytes / 1024 bytes = 0.864 = 1 M.

En esta operación se toman los 15 posibles almacenes que se adquirirán en un año, se multiplican por el total en bytes, luego este valor es llevado a megabytes (por comodidad) lo cual se consigue dividiendo entre 1024 bytes.

Ahora se realiza el mismo procedimiento para la próxima tabla, en este caso Area.

2) para la tabla Area:

Area
Columna
Tipo
Tamaño en bytes
Id_area
NUMBER
2
Descripcion
VARCHAR2
50
Metros_cuadrados
FLOAT
2
Tamaño total en bytes: 54

De igual manera se representan cada una de las columnas, su tipo y tamaño en bytes, y se suman todos los valores.

Suponiendo que el local tenga un total de áreas o estimando un incremento de áreas máximo total al año de 50.

Nota: Todos estos son estimados a la realidad, para tener una exactitud en valores, se pueden realizar mediciones en sistemas ya implementados, o conseguirlos consultando propiamente a los usuarios de dicho sistema.

50 * 54 = 2700 bytes / 1024 = 2.637 = 3 M.

Se toma el total máximo de áreas estimadas y se multiplica por el tamaño total en bytes de la tabla, nuevamente se realiza la conversión a megabytes.

Este proceso se repite para cada una de las tablas faltantes del modelo; ahora para finalizar se explicara una forma de estimar los datos de 2 de las tablas más complejas de predecir valores en el presente modelo, estas tabla son Cliente; ya que es un modelo para un mercado, y en nuestras reglas del mercado propiamente se registra propiamente 1 sola vez al cliente en la tabla cliente.

3) para la tabla Cliente:

Cliente
Columna
Tipo
Tamaño en bytes
Cedula_cliente
VARCHAR2
10
Nombre
VARCHAR2
30
Apellido
VARCHAR2
30
Telefono
VARCHAR2
20
Direccion
VARCHAR2
60
Tamaño total en bytes: 150

La estimación para  esta tabla se hará considerando lo siguiente:

a) Alrededor de 1 persona cada 3 minutos.
b) Con 2 cajas atendiendo en promedio.

Esto nos daría 40 personas en 1 hora, durante 10 horas de trabajo al día en promedio.

Lo que traería como resultado 400 personas al día * 358 (365 – 7)  días en promedio (estos 7 días son en promedio 7 días al año no laborales).

Se estima un total de 143200 personas hipotéticas al año y suponiendo que al menos todas las personas vuelven a comprar en el establecimiento al menos 15 veces al año.

Para poder finalmente tener una idea de en realidad cuantos clientes diferentes se registran únicamente en la tabla, se divide el resultado anteriormente calculado y se divide entre 15.

143200 / 15 = 9546.6687 = 9547 personas hipotéticas diferentes en el año.

Nota: Si no se tiene esta restricción, la división anterior no se efectúa.

Ahora con este valor, se procede a calcular su crecimiento.
9547 * 140 = 1336580 bytes / 1024 = 1305.25 = 1.5 M 

Esto ha sido todo por ahora finalmente, espero haya podido ser de utilidad, si el tema fue de su interés, próximamente escribiré un artículo para la gestión y mantenimiento de una BD, donde para la estimación realizada, podrá observarse su importancia propiamente.

1 comentario: