Bonjour,
Tout d'abord un peu d'histoire :
Je suis webmaster d'un site web de rencontre, mais assez proche du model de facebook. Donc newsfeed général et individuel, notifications, message 1n1 ajax, chatroom ajax, forums, visites avec stats individuel, etc.
Bref une machine de guerre codé en php... procédural, pas tapé . Le service mysql est down tous les soir minimum 3 fois et j'en ai eu ma claque de redemarrer ce truc. J'ai donc décidé de tout refaire à zéro pour que ça soit plus maintenable, ajouter quelque feat. et mon choix s'est porté sur Symfony2.
Au début je l'ai appris avec mysql et il y a une semaine je suis tombé sur un article sur le noSQL, je connaissais déjà, mais je n'avais aucune raison d'aller voir ce que c'était réellement vu que MySQL répondait à mes attentes. Sauf que la donne ayant changé j'ai quand même lu tout ça et j'ai tout dévoré ! Slider, conférence vidéo et autre articles sur le sujet. Et beaucoup parlais de mongoDB avec de jolie graph de perf. Et alors la je me suis dit : "Attend ! SF2 supporte mongoDB avec doctrine.". Et bien faisons un test. J'ai donc installer Genghis pour m'amuser un peu avec la console et ensuite couplé sf2+mongodb et j'ai fait un test d'insertion de 500 items et mongodb s'est avérer 5x plus performant que mysql. Autant vous dire que j'ai presque eu une érection .
Maintenant je me dis pourquoi pas sauter le pas et faire ce site en SF2+MongoDB. Cependant, j'ai la trouille. En effet ce n'est pas un choix à faire à la légère car ce site est un peu mon gagne pain donc je veux pas me gourer. Donc je viens vous poser certaines questions:
1/ En SQL nous avons les injections SQL, mais en mongoDB quels sont les risques niveau sécu ?
2/ MongoDB est bien sur ma machine, mais niveau serveur ça se passe comment ?
a ) Sur mon PC j'ai Genghis, mais il me demande aucun mot de passe ou quoi que se soit donc comment sécuriser ça sur mon serveur ? Je mets juste un .htaccess ?
b ) Et coté serveur comment sécuriser ? Car SF2 n'a besoin d'aucun login :
Donc ça sous entend que le premier gus qui essaye de se connecter y arrivera avec juste : mongodb://localhost:27017
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 # MongoDB Configuration doctrine_mongodb: connections: default: server: mongodb://localhost:27017 options: {} default_database: mongo_test document_managers: default: auto_mapping: true
3/ Et forcément c'est un bordel dans ma tête car les jointures n'existe pas et comme je trouve que des tutos qui survole mongodb et font juste du CRUD de base, ma soif n'est pas assouvit. Donc comment se passe les jointures s'il y en a pas ? On ma dit qu'il fallait répliquer les donner, mais ça devient vite ingérable.
Imagination j'ai une table pour les posts d'un forum et les users :
Ok répliquer les donnés du 'name' et 'sex' de l'user ça va, mais si paul change de nom c'est le bordel il y aura des dizaine de tables/documents à update.
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 users: -id => 1 -name => Paul -sex => Masculin -mail -pass -token -lastlogin topics -id => 1 -name => Discutions générales posts: -id -name => Paul -sex => Masculin -content => Lorem -created -topic_id => ?
Merci pour vos réponses. Si vous avez d'autres remarques que je n'ai pas soulevé, merci de m'en faire part
Partager