Conclusiones: MongoDB en CakePHP

Concluímos el artículo anterior con la colección users funcionando en CakePHP. En éste seguiremos con la implementación y las pruebas, que nos sirvan para obtener ya algunas conclusiones respecto a la utilización de MongoDB en CakePHP y al uso del plugin de ichikaway.

Para continuar explorando las bondades de MongoDB, hemos realizado pruebas de rendimiento y las hemos ido comparando con el rendimiento en una base de datos MySQL. Para ello hemos generado una base de datos en MySQL con una tabla “copyusers”, que tendrá los mismos datos que la colección “users” de nuestra base de datos MongoDB. Hemos creado una nueva configuración de base de datos que apuntara a MySQL y después hemos replicado la misma estructura de archivos que teníamos para “users”, modificando la configuración con la que debe trabajar el modelo:

/app/Config/database.php

    public $sqldb = array(
            'datasource' => 'Database/Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'root',
            'password' => '',
            'database' => 'pruebadb',
            'encoding' => 'utf8'
    );

/app/Model/Copyuser.php

<?php
class Copyuser extends AppModel {
    
    public $useDbConfig = 'sqldb';
       
}

En el controlador de “users” y de “copyusers” creamos un método que insertara secuencialmente un número determinado de registros, para poder evaluar tiempo de escritura y lectura de distintas pruebas:

Prueba 1: Proceso de escritura de 1000 registros y lectura de los 1000 registros.

Seisunos blog - prueba Mongodb

Seisunos blog - pruebas mongodb

La escritura es mucho más rápida utilizando MongoDB y la lectura de los 1000 registros es similar en ambos sistemas.

Prueba 2: Proceso de escritura de 10000 registros y lectura paginada y sin paginación.

Seisunos blog - pruebas mongodb

Seisunos blog - pruebas mongodb

seisunos blog - pruebas mongo

La escritura es notablemente más eficiene en MongoDB y con un número más elevado de registros, la lectura también tiene diferencias sustanciables en la duración.

Se podrían realizar más pruebas, pero para el propósito de esta serie de artículos, con éstas queda clara la eficiencia de MongoDB y su adecuación a proyectos con requisitos excepcionales de concurrencia y número de registros.

No obstante, hay una tarea que, a mi entender, deja una laguna. El plugin de ichikaway no se puede recomendar a día de hoy, principalmente por dos razones:

1. Está discontinuado.
2. Trabaja con un driver obsoleto de PHP e incluso utiliza funciones obsoletas en Mongo.

Aparte, tiene ciertas carencias. En otras pruebas que hemos realizado, hemos intentado forzar relaciones entre colecciones desde CakePHP sin éxito. Hemos dedicado tiempo a revisar la lista de comentarios que aparecen en su página de Github y nos son pocas las comunicaciones de aspectos que hacen sospechar.

Si el proyecto lo requiere, habría que intentar explorar otras opciones que pasarían por un desarrollo propio.

Related posts

Leave a Reply