Press "Enter" to skip to content

CakePHP e MongoDB: utilizzare un database NoSQL

Condividi il post con i tuoi amici o colleghi

Chi si occupa di sviluppo di applicazioni web di grandi dimensioni, dove c’è necessità di archiviare ed elaborare una mole notevole di dati, conosce bene l’importanza di puntare su un database NoSQL per lo storage. In questo post ti illustro come utilizzare l’ormai famoso MongoDB con CakePHP grazie all’utilizzo di un plugin che ho testato con la versione 2.6 di Cake.

Per prima cosa, scarica il plugin da qui e caricalo nella cartella app/Plugin/Mongodb. Ora devi attivarlo in app/Config/bootstrap.php:

CakePlugin::load('Mongodb');

A questo punto, come array di connessione in app/Config/database.php, devi specificare il datasource:

public $default = array(
    'datasource' => 'Mongodb.MongodbSource',
    'database' => 'test',
    'host' => 'localhost',
    'port' => 27017
);

Ecco fatto. Puoi fare “ciao ciao” con la manina al buon vecchio MySQL e iniziare i primi test con MongoDB. Potrebbe capitare di dover gestire qualche “differenza”, basta documentarsi. Ad esempio, per una ricerca con l’operatore LIKE:

$regex = new MongoRegex("/.*" .$this->request->data["User"]["q"] .".*/i");
			
$this->User->find = array(
    'conditions' => array(
        'User.username' => $regex
    )
);

Ricorda di utilizzare l’apposito Behavior.

Tips:

Se noti che i dati vengono memorizzati tutti come stringa (anche quelli Date e Integer), puoi effettuare il typecasting del dato nel model tramite il metodo beforeSave:

public function beforeSave($options = array()) {

        if (isset($this->data[$this->alias]['created'])) $this->data[$this->alias]['created'] = new MongoDate(strtotime($this->data[$this->alias]['created']));
       
        return true;
       
}

Condividi il post con i tuoi amici o colleghi