IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NoSQL Discussion :

Tutoriel sur un retour d'expérience d'une formation MongoDB pour les développeurs Java


Sujet :

NoSQL

  1. #1
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 73 024
    Points
    73 024
    Par défaut Tutoriel sur un retour d'expérience d'une formation MongoDB pour les développeurs Java
    La société Arolla, cabinet de conseil en technologies de l'information vous propose un retour d'expérience d'une formation MongoDB pour les développeurs Java.


    Pour lire le tutoriel, accéder à : http://arolla.developpez.com/tutorie...loppeurs-java/


    N'hésitez pas à mettre vos critiques et impressions par rapport à cet article dans ce forum.


    L'équipe Java
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Il faut savoir que chaque document au sein d'une collection a un identifiant unique, par défaut un champ de type ObjectId généré par Mongo. On peut cependant très bien utiliser un ID de notre système d'information à la place (numéro de sécurité sociale pour un individu par exemple).
    Désolé, mais ça c'est interdit...

    Le numéro de sécurité sociale ne peut être utilisé que dans des cas très précis définis par la loi (paye, frais maladie) et ne peut en aucun cas être utilisé comme identifiant pour un individu.


    En particulier, le numéro de sécurité sociale ne fait pas partie de la liste des informations qui doivent figurer dans le registre unique du personnel, fixée par les articles L.620-3 et R. 620-3 du code du travail, (L1221-13 à 15 depuis 2008) et ne doit donc pas être enregistré dans ce cadre.

    Le numéro de sécurité sociale d’un employé ne peut donc pas être utilisé comme numéro de matricule unique pour l’identifier dans tous les fichiers de gestion des ressources humaines de son entreprise ou de son administration.
    Source : http://www.cil.cnrs.fr/CIL/spip.php?article1434
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut
    Je te félicite pour ton tutoriel.

  4. #4
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Merci pour ce tuto, je m'initie en ce moment à mongodb et je le trouve donc très intéressant. Cependant, étant très habitué au modèle relationnel j'ai du mal à trouver mes repères et à trouver les bonnes pratiques.

    Petite question sur le premier exemple:
    Exemple :

    Imaginons un blog contenant des posts, chaque post contenant des commentaires. [...]

    Avec MongoDB, on va créer des documents qui contiennent un tableau de commentaires (dénormalisation) comme suit :
    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
    {
           "_id" : { "$oid" : "5143ddf3bcf1bf4ab37d9c6d" },
           "body" : "Je suis un super post !",
           "post_date" : { "$date" : 1363402227874 },
           "comments" : [
                 {
                        "_id": 1,
                        "comment_text": "Je suis le commentaire 1",
                        "author": "Mickael Barroux"
                 },
                 {
                        "_id": 2,
                        "comment_text": "Je suis le commentaire 2",
                        "author": "Arolla",
                 }
           ]
    }
    Cela sera optimisé pour la récupération des données en lecture. Par contre, revers de la médaille, ce sera un peu plus compliqué dans des cas de mises à jour du nom d'un auteur par exemple (il faudra mettre à jour l'auteur de chaque commentaire écrit par la personne).
    Je me posais la même question en regardant le schéma de la base, comment changer le nom de l'auteur si celui ci change son pseudo. On devra boucler sur tous les messages, comparer le champs author (donc comparaison de chaine, plus lent que comparer un id). Existe il une meilleur pratique? Tout ce que je peux imaginer retombe dans un modèle relationnel...


    Imaginons aussi qu'un utilisateur a une signature sur ces messages (potentiellement longue). Si la personne a 3000 messages, et qu'il décide d'en changer, on va devoir réécrire 3000 fois sa signature dans la base?

    Ma deuxième question porte sur le schéma dynamique de mongodb (le fait de pouvoir rajouter des champs ou des sous collections à certains documents seulement). Comment le gérer efficacement dans son application (comment éviter d'appeler un champs qui n'existe pas)? Avez vous des exemple d'utilisation concrets de cette possibilité?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Août 2004
    Messages : 30
    Points : 43
    Points
    43
    Par défaut
    Le système est optimisé pour la lecture alors oui il faut reparser tout les éléments à changer. Si des éléments varient il doivent appartenir à une autre "colonne" (heu... quel nom donner) avec l'identifiant qui va bien.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/10/2014, 12h02
  2. Réponses: 0
    Dernier message: 18/01/2011, 18h28
  3. Réponses: 0
    Dernier message: 18/01/2011, 18h28
  4. Réponses: 2
    Dernier message: 03/11/2010, 00h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo