De 22 tablas (SQL) se pasa a 3 colecciones (MongoDB).
En vez una base de datos para toda la información, se utilizan múltiples bases de datos: una única base de datos para perfiles de usuario y datos perdurables de gimnasio (incluyendo planes, programas, clases, videos, galerias, etc).
Adicionalmente, cada gimnasio tendrá una base de datos propia en la que se almacenará la información propia de las instancias de clase, con la que se pretende aislar la actividad de instancias de clases de un gimnasio de las de otro.
Los principios u objetivos en que guían y en los que se basa esta reestructuración:
Las operaciones agrupadas por tipo de usuario son de mayor a menor: Usuarios, Profesores, Admins.
La operación más frecuente es la consulta de cupos disponibles y las de clases, luego las operaciones de reserva/cancelacion, luego las de toma de clase, revisión de asistencias y finalmente, la menos frecuente, las utilizadas para conformar reportes.
Como el usuario de Boxmagic sólo ve un gimnasio a la vez (su gimnasio activo), separar ciertos datos como los de las reservas para una clase, fecha y horario específicos, es lógico y trae mejoras de desempeño significativas.
Toda información que solo cambie al hacerse una operación debe quedar guardada de forma que optimice su consulta, de este modo por mucho que se consulte, por ejemplo, la cantidad de cupos disponible para una instancia de clase, no implicará un aumento de la actividad de procesamiento.