Mongo DB, jour 2

La suite de mes aventures avec la base de données Mongo (l'épisode 1, : c'est ici).

Finalement, j'ai réussi à faire fonctionner Mongo sur mon serveur Linux. Au lieu de recompiler l'ensemble de mon système pour passer en GCC 4, j'ai tout simplement utilisé les binaires compilés en statique proposés sur le site officiel. C'est pas optimal, mais ça fonctionne. J'ai récupéré le script d'init dans le package sunrise, je l'ai adapté à mon système et ça fonctionne au poil.

J'ai également compilé et installé le pilote PHP sans problème particulier sur une version 5.3.0 de PHP.

Je peux donc à présent tester MongoDB pour en explorer les différentes possibilités. Je me suis lancé dans la conception d'une interface d'administration que j'ai nommé, en faisant preuve d'énormément de créativité, phpMongoAdmin.

phpMongoAdmin

Pour l'instant, elle permet de parcourir les bases de données et les collections. J'ai adopté une présentation des données sous forme de tableau, car je pense que c'est ce qui convient le mieux, mais comme Mongo n'a pas de schéma, les colonnes sont ajoutées dynamiquement.

Une fois qu'elle sera un peu plus élaborée, je pense la publier sous licence GPL. Pour l'instant, je doit ajouter une identification HTTP Digest et nettoyer un peu le code.

Pour revenir à Mongo DB, je lui ai trouvé un avantage non négligeable par rapport à SGBDR. Si on a besoin de créer une base de données par utilisateur, c'est très simple avec Mongo. Il suffit d'un appel à Mongo::selectDB pour ça. C'est plus rapide et moins lourd car comme il n'y a pas de schéma, pas besoin de créer toute une série de tables. Les collections sont créées à la volée, quand on en a besoin. Bon évidemment, il doit y avoir une limite sur le nombre de base de données qu'on peut créer sur un serveur. Déjà, il doit y avoir une limitation entrainée par le système de fichiers, puisque une base de données = 2 fichiers. Ensuite, on devrait atteindre les limites du système avant à cause de la taille de ces bases de données. Sur un serveur MySQL, d'après ce que j'ai trouvé ici ou là sur Internet, on a des serveurs avec plus de 500 bases de données, voir 2000 si très peu sont utilisées en simultané.

La suite au prochain numéro...

Etiquettes:

Commentaires

Tu peux regarder aussi http://blog.boxedice.com/2009/07/25/choosing-a-non-relational-database-w....

Perso je me suis tourné vers CouchDb d'Apache pour les bases orientées documents (http://en.wikipedia.org/wiki/Document-oriented_database), un adaptateur est en cours de création pour ZF (http://framework.zend.com/wiki/display/ZFPROP/Zend_Couch+-+Matthew+Weier...), et pourquoi pas une extension PHP aussi ( même si CouchDb est toujours en version non stable).

MongoDB est pas mal aussi et a l'avantage énorme de déjà proposer une extension PECL, donc performances au rendez-vous (indispensable je pense).
Nul doute que de tels connecteurs trouveront leur place dans ZF un jour, pk pas pour la version 2.0 ?

Je me suis aussi intéressé à CouchDB mais les commentaires que j'ai trouvé ici ou là sur Internet me laissent penser que c'est plus compliqué à utiliser. J'ai survolé rapidement la documentation, l'api REST ne me semble pas très élégante. Enfin si adaptateur ZF est livré dans une prochaine version du framework, je ne manquerai pas de m'y intéresser.

D'ailleurs, je n'arrive pas à trouver comment faire une requête qui recherche une valeur spécifique dans un champ avec CouchDB.

Ajouter un commentaire