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.