Estimacion de tamaño base de datos

Anuncio
Variables para el cálculo







TI
TD
TIDX
TC
TUD
TLOG
CS
Datos conocidos: cantidad de materias
Carreras
25 * 14 * 40 = 14000
Maestrias
20 * 20 = 400
Cursos
180 * 15 = 2700
Tecnicaturas (estimo 2 años - 20 materias)
25 * 20 = 500
TOTAL = 17600 materias distintas
TI
Según la documentacion leida en el sitio oficial, el tamaño de instalacion inicial de la base
de datos MySQL es de 200 MB.
Luego, TI = 200 MB.
TD
Para obtener el cálculo de TD debimos recurrir a la estimacion en base a datos conocidos
y predicciones.
Según nuestro análisis, la base de datos estara compuesta de aproximadamente 50
tablas. La intencion es analizar una muestra representativa de tablas, y según estos
valores estimar un indice de TD aproximado.
Datos conocidos




25 regionales
14 carreras por regional
40 materias por carrera
100,000 alumnos
Tabla USUARIOS
La tabla usuarios contiene informacion sobre todos los usuarios que utilizan el sistema,
tanto alumnos como profesores u otros agentes de la universidad.
Campo
id
username
password
nombre
apellido
email
telefono 1
telefono 2
direccion
primer acceso
ultimo acceso
pregunta
secreta
tipo de dato
int
varchar(50)
varchar(50)
varchar(50)
varchar(50)
varchar(50)
int
int
varchar(200)
datetime
datetime
varchar(200)
Peso (bytes)
4
max 50
max 50
max 50
max 50
max 50
4
4
max 200
8
8
max 200
Peso de un registro
Fixed data size = 4 + 4 + 4 + 8 + 8 = 28
Variable data size = 2 + (2 * 7) + 50 * 5 + 200 * 2 = 2 + 14 + 250 + 400 = 666
nullbitmap = 4
peso de un registro = 28 + 666 + 4 = 698
Cantidad de filas (aprox)
CF = 100,000 alumnos + 300 profesores por regional (estimado)
CF = 100,000 + 300 * 25 = 100000 + 7500 = 107500
Total
Total = 698 * 107500 = 75035000 Bytes = 73276 KB = 71 MB
Tabla CURSOS
La tabla cursos es la que tiene una entrada por cada aula virtual existente en el sistema.
Es una de las tablas mas importantes de la aplicación.
Campo
id
category
password
nombre
descripcion
profesor
fechainicio
fechacreacion
fechamodificacion
tipo de dato
int
int
varchar(50)
varchar(50)
varchar(200)
int
datetime
datetime
datetime
Peso (bytes)
4
4
max 50
max 50
max 200
4
8
8
8
Peso de un registro
Fixed data size = 4 + 4 + 4 + 8 + 8 + 8 = 36
Variable data size = 2 + (2 * 3) + 50 * 2 + 200 * 1 = 2 + 6 + 100 + 200 = 308
Nullbitmap = 4
Peso de un registro = 36 + 308 + 4 = 348
Cantidad de filas (aprox)
Para la cantidad de cursos, consideramos que solo habra un curso por materia, por cada
carrera, por cada regional (como se utiliza actualmente la plataforma moodle)
CF = 14000 materias + 400 maestrias + 2700 cursos de especializacion + 500
tecnicaturas
CF = 17600 entradas
Total
Total = 348 * 17600 = 6124800 Bytes = 5981 KB = 5 MB
Tabla USUARIOS-CURSOS
Esta es la table relacional mas importante, la cual enlaza la table Usuarios y la table
Cursos. Su importancia se debe tanto por su funcionalidad como por su volumen, ya que
un Alumno estara asociado a varios cursos durante toda su carrera.
Campo
id
userid
curso
fecha_inicio
fecha_fin
tipo de dato
int
int
int
datetime
datetime
Peso (bytes)
4
4
4
8
8
Peso de un registro
Fixed data size = 4 + 4 + 4 + 8 + 8 = 28
Variable data size = 0 = 0
Nullbitmap = 0
Peso de un registro = 28 = 28
Cantidad de filas (aprox)
Se asume que cada alumno participara en un aula virtual por cada materia que curse
durante su carrera.




Se asume que el 90% de los inscriptos son alumnos de carreras de grado (40
materias)
5% son alumnos de maestrias (20 materias)
3% son alumnos de cursos de especializacion (15 materias)
2% son alumnos de tecnicaturas (20 materias)
Los profesores no se encuentran en esta tabla, ya que estan referenciados directamente
en un campo de la tabla CURSOS.
Para la cantidad de cursos, consideramos que solo habra un curso por materia, por cada
carrera, por cada regional (como se utiliza actualmente la plataforma moodle)
CF = 90,000 * 40 + 5,000 * 20 + 3,000 * 15 + 2,000 * 20
CF = 3600000 + 100000 + 45000 + 40000
CF = 3785000 entradas
Total
Total = 28 * 3785000 = 105980000 Bytes = 103496 KB = 101 MB
Tabla FOROS
Esta tabla contiene un listado de todos los foros existentes en el campus virtual. Se
asume un foro para cada materia.
Campo
id
curso
Nombre
tipo de dato
int
int
varchar(200)
Peso (bytes)
4
4
max 200
Peso de un registro
Fixed data size = 4 + 4 = 8
Variable data size = 2 + (2 * 1) +200 * 1 = 2 + 2 + 200 = 204
Nullbitmap = 1
Peso de un registro = 8 + 204 + 1 = 213
Cantidad de filas (aprox)
Para la cantidad de cursos, consideramos que solo habra un curso por materia, por cada
carrera, por cada regional (como se utiliza actualmente la plataforma moodle)
CF = 14000 materias + 400 maestrias + 2700 cursos de especializacion + 500
tecnicaturas
CF = 17600 entradas
Total
Total = 213 * 17600 = 3748800 Bytes = 3660 KB = 3 MB
Tabla FORO-POST
Esta tabla es el foro propiamente dicho, ya que es el lugar de almacenamiento de todos
los mensajes de todos los foros.
Campo
id
padre
userid
creacion
modificado
mensaje
tipo de dato
int
int
int
datetime
datetime
varchar (1000)
Peso (bytes)
4
4
4
8
8
max 1000
Peso de un registro
Fixed data size = 4 + 4 + 4 + 8 + 8 = 28
Variable data size = 2 + (2 * 1) + 1000 * 1 = 2 + 2 + 1000 = 1004
Nullbitmap = 1
Peso de un registro = 28 +1004 + 1 = 1032
Cantidad de filas (aprox)
Estimar la cantidad de mensajes es un poco mas complicado. Según nuestros calculos, la
cantidad de posts en un foro puede ir desde los 50 hasta los 500. Si efectuamos un
promedio
(50 + 500) = 275
Para no fallar por lo bajo en la estimacion, vamos a asumir que la norma es la cota
superior, 500 mensajes por foro.
CF = 17600 foros * 275 mensajes/foros = 4840000
Total
Total = 1032 * 4840000= 4994880000 Bytes = 4877812 KB = 4763 MB
Estimación final de TD
Como dijimos antes, vamos a usar esta muestra de calculos para aproximar a un valor
global de TD. Utilizaremos el promedio:
Tabla
Usuarios
Cursos
Usuarios Cursos
Foros
Foros Posts
Peso estimado
71 MB
5 MB
101 MB
3 MB
4763 MB
Peso estimado / tabla = (71 + 5 + 101 + 3 +4763) / 5 = 4943 / 5 = 988 MB / tabla
Como dijimos antes, el sistema tendra unas 50 tablas. Luego,
TD = 50 tablas * 988 mb/tabla = 49430 MB = 48 GB
TIDX
Para el tamaño de los indices, asumimos para los calculos que se utilizara el indice por
defecto de MySQL, que es el de b-tree.


El nodo b-tree en MySQL pesa 4KB
Todas las tablas tienen 1 (un) solo indice
Debemos sacar el promedio de registros por tabla.
Tabla
Usuarios
Cursos
Usuarios Cursos
Foros
Foros Posts
Cantidad de registros (aprox)
107500
17600
3785000
17600
4840000
Registros / tabla = (107500 + 17600 + 3785000 + 17600 + 4840000) / 5 = 8767700 / 5
Registros / tabla = 1753540
Tamaño indices = 50 tablas * 4 * kb/indice * 1753540 indice/ tabla = 350708000 KB
Tamaño indices = 350708000 KB = 342488 MB = 334 GB
TC
Este tamaño es insignificante en cuanto a los demas. Se estima que el conjunto de
procedimientos y funciones ocupan 100 MB, con amplio margen.
TU
La documentacion indica que se debe considerar unos 100 MB aproximados.
TLOG
Según la documentacion consultada, el tamaño de TLOG suele estar asociado al tamaño
total de los datos de la base (en general, un 50% del mismo)
TLOG = 0.5 * 48 GB = 24 GB
CS
Se tomara un coeficiente de seguridad de 1.50
TOTAL (TDB)
TdB = (Ti + Td + Tidx + Tc + Tud + Tlog) * CS
TdB = (200 MB + 48000 MB + 334000 MB + 100 MB + 100 MB + 24000 MB) * 1.75
TdB = 609600 MB = 595 GB
Conclusion
Se estima que la base de datos (sin archivos) pesara 595 GB aproximadamente.
Descargar