Je dois créer une base de données de séries chronologiques et effectuer les tâches suivantes:
- créer de nouvelles séries chronologiques
- mettre à jour les séries chronologiques existantes
- interroger une ou plusieurs séries temporelles à la fois (par exemple toutes les séries temporelles pour la même date etc ...)
Mongo est-il adapté à cela et si oui, comment dois-je structurer la base de données? (une série temporelle = un document? Ou un document = une entrée de la série temporelle, et tous ces documents forment la collection qui est la série chronologique entière?)
Je suis un peu perdu ici et j'ai du mal à trouver des informations car généralement Mongo est présenté comme très flexible donc l'utilisateur a le choix dans l'infrastructure.
Tout lien vers un didacticiel expliquant spécifiquement comment gérer les séries temporelles dans Mongo est le bienvenu.
Je vous remercie!
Réponses:
Je suggère une seule entrée de série chronologique par document. Il y a quelques problèmes avec le stockage de plusieurs entrées par document:
Notez également qu'un horodatage est intégré à l'ID d'objet MongoDB par défaut . Vous pouvez l' utiliser si la précision de la série chronologique est inférieure à une seconde.
Voici un exemple de document BSON d'une bibliothèque de journalisation des événements qui utilise MongoDB :
Puisqu'un journal d'événements est similaire à une série chronologique, il peut être utile d'étudier le reste du code . Il existe des versions en Java, C #, PHP et Python.
Voici un autre projet open source similaire: Zarkov
[mise à jour] En réponse au commentaire de @ RockScience, j'ai ajouté quelques références supplémentaires:
la source
J'ai trouvé cette question sur SO ( /programming/4814167/storing-time-series-data-relational-or-non ) où l'OP demande comment stocker une série chronologique. Bien que sa question soit davantage basée sur l'utilisation d'une base de données NoSQL ou d'un SGBDR, et vous semblez plutôt déterminé à utiliser une base de données NoSQL.
Vous trouverez également cet article sur " Les exigences de base de données uniques des données de séries chronologiques " qui pourraient être utiles.
J'espère que cela t'aides.
la source
Oui, la base de données NoSQL convient mieux au stockage des données de série temporelle que le SGBDR traditionnel.
Oui, MongoDB est exceptionnellement adapté à ce cas d'utilisation.
-Comment structurer la base de données? Un document = une entrée de série chronologique VS plusieurs séries chronologiques.
La réponse est de stocker dans un même document plusieurs séries temporelles. Avoir moins de documents améliorera les performances avec moins de lectures. Une astuce consiste à préparer votre document avec les valeurs prédéfinies. Cela optimisera la mise à jour du document en évitant le remplissage d'enregistrement .
Voici un exemple de schéma sur la façon de stocker de manière optimale une heure de séries temporelles avec un intervalle d'une minute:
Vous l'initiez avec 0 valeurs, puis les mises à jour seront optimisées. Les lectures sont optimisées car un document est lu au lieu de 60. Si vous avez besoin de stocker une journée de données, ou un mois vous procédez avec la même technique, vous avez l'idée.
Voici le lien vers un tutoriel qui explique spécifiquement comment gérer les séries chronologiques dans MongoDb à partir du blog officiel de MongoDb: http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in- mongodb
la source