1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2014
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2014
    Messages : 47
    Points : 31
    Points
    31

    Par défaut Diverses questions à propos de MongoDB

    Bonjour,

    J'utilise MongoDB afin de stocker des données provenant d'objets connectés utilisant le protocole MQTT.
    J'ai une application à l'écoute de MQTT qui stocke les données dans la DB (timestamp et une valeur).
    Pour ce faire je créé une base de données par objet connecté (identifié par un ID) et une collection par type de données publiées par l'objet (température, humidité, position gps, etc...)

    Au début je me posais la question si c'était pas un problème de créer une DB par objet connecté (il doit y en avoir 1000 environ et ça va encore augmenter) mais j'ai demandé à des "experts" qui donnaient une formation sur MongoDB et ils m'ont dit que ce n'était pas un problème. Mais, il n'y a pas très longtemps, d'autres personnes qui, elles, ne connaissent pas vraiment MongoDB mais plutôt les DB SQL m'ont dit que ce n'était pas la chose à faire, qu'il valait mieux avoir une seule base de données, que ça évitait la fragmentation des fichiers (entre autres).

    Un des problèmes que je rencontre également est celui des index, Les collections sont créé dynamiquement par mon application à chaque fois qu'une valeur est publiée sur un nouveau topic MQTT. Je devrais donc pour bien faire vérifier à chaque fois si l'index existe dans une collection et si pas, le créer, mais je suppose que ça bouffe beaucoup de ressources de faire le test.

    Qu'en pensez vous ?

    Merci

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    3 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 3 983
    Points : 8 326
    Points
    8 326

    Par défaut

    Plus que savoir comment stocker la question à se poser est quoi stocker.

    une fois que tu as définie la (les) structure(s) de données à manipuler tu saura si tu mets tous dans une collection ou dans plusieurs.

    Pour ce qui est de MQTT vers Mongo j'utilise Apache Camel MongoDb 3 et Apache Camel MQTT

    ça donne un truc très simple comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from("mqtt:myQueue")
    .to("mongodb3:myDb?database=aDB&collection=myCollection&operation=save");//save <=> upsert (insert or update)
    le composant camel mongo offre des converters maps -> Document, Document - Map, String -> Document, File -> Document, etc.

    PS: il y a bien un composant mongodb3 basé sur le java driver 3
    https://github.com/apache/camel/blob...component.adoc

    A+JYT

  3. #3
    Expert Oracle confirmé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2003
    Messages : 343
    Points : 663
    Points
    663

    Par défaut

    Bonjour,

    Pour ce faire je créé une base de données par objet connecté (identifié par un ID) et une collection par type de données publiées par l'objet (température, humidité, position gps, etc...)
    Au début je me posais la question si c'était pas un problème de créer une DB par objet connecté (il doit y en avoir 1000 environ et ça va encore augmenter)
    Vous faites une base par objet connecté ? Mais pourquoi ? Que gagnez-vous à faire cela ?

    Si par exemple je vous demande de retourner la température la plus élevée, cela veut dire que vous devez vous connecter successivement à votre millier de bases pour avoir la température maximale par IOT, puis après prendre la température maximale ?!

    Pour moi vous ne devriez avoir qu'une seule base, avec qq collections (à voir).

    Car pour moi, avec votre millier de base, vous allez à l'inverse des principes de cluster et de Sharding.

Discussions similaires

  1. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  2. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  3. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  4. Diverse question ...
    Par Dims dans le forum Développement
    Réponses: 11
    Dernier message: 13/01/2004, 15h29
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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