Bonjour à tous,
J'utilise MongoDB pour lire des documents, sachant que la base de données contient une collection de 350 000 documents .
Seulement voilà j'ai des problème aussi bien niveau de la lecture que de l'insertion des nouveaux documents sur la base de données de MongoDB .
Voici les codes que j'utilise pour la mise à jour de la base de données et la recherche des documents par mot clés
Mise à jour des documents :Le champ "tags" contient un tableau de mots clés provenant du titre du document via la fonction "split" de php . A noter au passage que j'ai mis un index sur le champ "tags".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $cnx_mongo = new Mongo("127.0.0.1", array("persist" => "x")); $db = $cnx_mongo->my_database; $ma_collection = $db->my_collection; $response = $ma_collection->drop(); $response = $db->drop(); $db = $cnx_mongo->my_database; $ma_collection = $db->my_collection; ///Importation des données depuis une autre base de données (hors MongoDB) ///Pause d'un index sur la champs "tags" $ma_collection->ensureIndex("tags");
Le code utilisé pour recherche des document par mot clés :
Comment puis je resoudre ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 $cnx_mongo = new Mongo("127.0.0.1", array("persist" => "x")); $db = $cnx_mongo->my_database; $ma_collection = $db->my_collection; //Get back keywords researching by tags fields $who = array(); if(count($ArrayWord) > 1) { $tmp = array(); foreach ($ArrayWord as $q) { $tmp[] = new MongoRegex( "/". strtolower($q) ."/" ); } $who['tags'] = array('$all' => $tmp); }else{ $who['tags'] = new MongoRegex( "/". strtolower($mot) ."/" ); } $cursor = $ma_collection->find($who)->limit(30)->skip(60); $cursor->timeout(1000); print($cursor->count()); // I display the number of documents foreach($cursor as $obj){ ///Affichage des resultats de la recherche des documents }
Est un problème lié à la mémoire ? J'ai 6 Go au total de mémoire physique sur le serveur avec 4 Go de mémoire disponible .
Comment puis je diagnostiquer le problème de lenteur de ma base de données ? Y a t'il quelque pour configurer MongoDB ?
En vous remerciant d'avance .
Cordialement .
Partager