Archives pour l'étiquette mongodb

MongoDB, c’est quoi ? faire du no-sql ou sql ?

MongoDB est une base de données de type No-SQL. Avant d’entrer dans le détail, il serait intéressant de savoir ce que c’est le no-sql.

No-SQL

[fr] http://fr.wikipedia.org/wiki/NoSQL
[en] http://en.wikipedia.org/wiki/NoSQL
[en] http://www.mongodb.com/learn/nosql

Pour faire au plus simple, le No-SQL fait référence aux bases de données qui n’applique pas le modèle classique d’une base de données relationnelle.
Exemple dans MariaDB, les données sont structurées (par table) via un schéma défini. La différence est plus frappante si vous utilisez XtraDB pour ces propriétés ACID. Alors que sur MongoDB, il n’y a pas de schéma est vous sauvegardez des documents par collections.

No-SQL ou SQL ?

Attention je vous préviens dés maintenant, si vous comptez faire un site en NO-SQL vous allez sûrement vous planter, le NO-SQL reste un concept de base de données pour du spécifique. Pour votre projet, imaginez d’abord vos données dans une SGBD relationnelle, il n’y a rien de mieux que la cohérence d’information, ce que vous n’avez pas avec du NO-SQL.

MongoDB

MongoDB est un projet open-source très actif. Ces données sont enregistrées en BSON (du JSON qui permet de gérer plus de types de valeur). Cette SGBD à la chance d’avoir un grand nombre de driver pour des languages comme C, C++, Go, Java, JavaScript, Nodejs, PHP, Python, Ruby, Scala et plus encore.

Vous pouvez très bien utiliser un MongoDB en amont de votre base de données, pour effectuer des traitements rapide sur des éléments précis, faire de la statistique, etc.
MongoDB sera très bien aussi gérer vos sessions utilisateurs, ou faire du cache. Tout ce qui peut être stocké de façon isolé du reste de votre SGBD relationnelle pourrait ce sauvegarder en NO-SQL.

Le SlideShare si-dessous vous illustre mes propos :

http://fr.slideshare.net/FlorentDENIS/mongodb-ekino

Ce qu’il faut savoir

Il faut savoir que MongoDB utilise de la RAM pour les documents les plus demandés, pour des performances optimales il faut avoir autant de RAM que d’espace disque utilisé par MongoDB, voir le working set.
MongoDB allouera de l’espace de stockage à l’avance, au début 64Mo, puis 128Mo, ainsi de suite jusqu’à allouer par paquet de 2Go. Et MongoDB ne supprime pas physiquement ce que vous lui demandé de supprimer, vous devez compacter* votre collection pour supprimer l’inutilisé.
Comme pour un MySQL, MongoDB entretient un journal (vous pouvez squeezer ce journal pour écrire directement sur le disque via des options d’insertion de document). Il est recommandé de placer votre journal sur un autre disque que celui de votre BDD, pour limiter l’I/O.
MongoDB permet de faire du map-reduce sur vos collections, pour effectuer différents traitements ou calcule.
MongoDB tolère la partition* réseau et chaque client voir les mêmes données, ce qui est plutôt agréable. Vous pouvez (voir devez) faire du sharding et de la réplication de données.
MongoDB permet aussi de faire de la géolocalisation sphérique.

[en] http://learnmongo.com/posts/compacting-a-mongodb-collections/
[en] http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
[en] http://blog.nahurst.com/visual-guide-to-nosql-systems
[fr] http://fr.wikipedia.org/wiki/Partition_(base_de_donn%C3%A9es)

Pratiquez

C’est un tour rapide de MongoDB, si vous désirez en s’avoir plus, je ne peux que vous encourager à pratiquer :) J’ai concience de vous avoir envoyez plein d’information d’un seul coup sans explication, mais je préfère montrer la surface et vous pourrez vous faire une idée par vous-même de certain point précis grâce à d’autre articles plus technique sur le web.
Si vous avez des remarques n’hésitez pas.