2014-06-13 3 views
0

J'ai plus de 1000 appareils audio en continu déployés dans le monde entier. Ils sont actuellement tous enregistrés avec le service de surveillance d'usine environ toutes les 15 minutes. Je lance mon propre service de surveillance et je stocke les mises à jour de statut avec mongo.Surveillance Service MongoDB Schema Design

Question:

Quelle serait un meilleur schéma de conception:

1) Une énorme collection nommée device_updates. Où tout le document de mise à jour de statut inclurait une clé de périphérique serial_number? 2) 1000+ collections nommées avec le numéro de série des périphériques, par exemple: 65FE9, avec les mises à jour de statut des périphériques en silo dans leur propre collection. Si j'empruntais cette route, je limiterais les collections à environ 2000 documents de mise à jour.

Les deux doivent être indexés par la clé de date created_at.

Des idées sur lesquelles serait une meilleure performance sage? Ou des idées sur ce qui serait la méthode préférée?

Merci!

Répondre

1

Je vais certainement pour une collection massive, puisque tous les documents sont du même type . En règle générale, considérons une collection dans MongoDB comme un ensemble de documents homogènes. De plus, le fait d'avoir une seule collection facilite considérablement le redimensionnement horizontal (c'est-à-dire, en utilisant partitions), en utilisant par exemple le serial_number comme clé de partition.

+0

Merci pour la réponse! Principalement, je représenterais graphiquement les mises à jour d'état individuelles avec les informations qu'ils rapportent sur leurs connexions réseau et les problèmes de mise en mémoire tampon qu'ils pourraient avoir. – whobutsb

+0

En dehors de MongoDB, avez-vous consulté le framework Graphite (http://graphite.wikidot.com/)? Is est une bonne solution open-source pour la collecte et la représentation graphique des données de performance. –